import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
from google.colab import files
uploaded = files.upload()
Saving df_2022_part1.csv to df_2022_part1.csv Saving df_2022_part2.csv to df_2022_part2.csv Saving df_2022_part3.csv to df_2022_part3.csv
df_2022_part1 = df_2022_part1.rename(columns={"Quelle est votre *adresse email professionnelle* ?": "email"})
df_2022 = pd.merge(df_2022_part1, df_2022_part2, on="email", how='left')
df_2022 = pd.merge(df_2022, df_2022_part3, on="email", how="left")
df_2022.shape
(1559, 112)
df_2022 = df_2022.drop(["Token_y", "name_y", "name_entreprise", "nom_de_famille_y", "Submitted At_x"], axis=1)
Reprise du code de Franck pour le nettoyage + améliorations
#Déplacement de l'ID en première colonne
first_column = df_2022.pop('Token')
df_2022.insert(0, 'Token', first_column)
df_2022.head()
# Visualise and check NaN
plt.figure(figsize=(45,10))
sns.heatmap(df_2022.isna(), cmap="Blues_r", cbar=False)
plt.show()
/usr/local/lib/python3.7/dist-packages/matplotlib/backends/backend_agg.py:214: RuntimeWarning: Glyph 127873 missing from current font. font.set_text(s, 0.0, flags=flags) /usr/local/lib/python3.7/dist-packages/matplotlib/backends/backend_agg.py:183: RuntimeWarning: Glyph 127873 missing from current font. font.set_text(s, 0, flags=flags)
# changement de nom pour les colonnes afin que cela soit plus facile à analyser
# Pour les questions simples, je laisse la question comme nom de colonne
# Pour les questions "multiples", je renomme les questions en "question_#_identifiant"
# la numérotation se base sur le Gsheet de Vendredi
col_name_2022 = {"Submitted At": "submitted_at",
"Quel est le nom de votre *entreprise* ?": "nom_entreprise",
"Quel est votre *rôle* chez {{field:535b54cf-1d17-4acb-b449-f4a2e0d70888}} ?": "role",
"Combien de *collaborateurs* travaillent chez {{field:535b54cf-1d17-4acb-b449-f4a2e0d70888}} ?": "taille_entreprise",
"A quel *secteur* appartient {{field:535b54cf-1d17-4acb-b449-f4a2e0d70888}} ?": "secteur",
"Y a-t-il *une personne ou une équipe dédiée* à la RSE chez {{field:535b54cf-1d17-4acb-b449-f4a2e0d70888}}? Si oui, combien de personnes constituent cette équipe ?": "equipe_RSE",
"COMEX": "question_8_COMEX",
"Salariés": "question_8_salaries",
"Middle Management": "question_8_middle_management",
"Achats": "question_8_achats",
"RH": "question_8_RH",
"Communication / Marketing": "question_8_com_market",
"Commercial": "question_8_commercial",
"Production ": "question_8_prod",
"Finance / Administration": "question_8_finance_admin",
"Etat et collectivités publiques": "question_10_etat_co_publiques",
"Consommateurs / clients": "question_10_conso_clients",
"Sous-traitants": "question_10_ss_traitants",
"Candidats (recrutement)": "question_10_candidats",
"Citoyens proches de vos implantations": "question_10_citoyens",
"Actionnaires": "question_10_actionnaires",
"Entreprise à mission": "question_12_entreprise_mission",
"B Corp": "question_12_BCorp",
"Label Lucie": "question_12_Lucie",
"1% For The Planet (ou équivalent)": "question_12_1%",
"Loi ESUS": "question_12_esus",
"Marque employeur et fidélisation des talents ": "question_13_marque_employ",
"Image de marque et compétitivité": "question_13_image",
"Réponse à l’urgence sociale et environnementale": "question_13_urgence",
"Investisseurs": "question_13_invest",
"Volonté de la direction": "question_13_volonte",
"Réponse aux obligations légales": "question_13_legales",
"Manque de temps / dépriorisation":"question_14_temps",
"Manque de budget": "question_14_budget",
"Manque d'équipe": "question_14_equipe",
"Manque de connaissance des sujets": "question_14_connaissance",
"Difficulté d'impliquer le middle management": "question_14_m_management",
"Difficulté d'impliquer la direction": "question_14_direction",
"Difficulté à embarquer les équipes opérationnelles": "question_14_ope",
"Difficulté à animer la démarche sur le long terme": "question_14_long_terme",
"Difficulté de mesurer l'impact / le ROI": "question_14_impact",
"Fresque (Climat, Océan, Forêts, Numérique, Egalité…)": "question_16_fresque",
"Formation ou autre atelier de sensibilisation": "question_16_atelier",
"Compétition, jeux, challenges (Challenges Vendredi, Ma Petite Planète, Energic, …)": "question_16_jeux",
"Partage de contenus (articles, podcasts, vidéos…)": "question_16_partage",
"Affichage dans les locaux": "question_16_affiche",
"{{hidden:name_entreprise}} a-t-elle déjà mis en place des *actions d’engagement solidaire *ou de *philanthropie *?": "Avez-vous déjà mis en place des *actions d’engagement solidaire *ou de *philanthropie *?",
"Mécénat de compétences": "question_36_mecenat",
"Collectes de matériel ou produits": "question_36_collects",
"Mentorat (jeunes, demandeurs d'emploi...)": "question_36_mentorat",
"Mission coup de pouce en association": "question_36_missions",
"Dons financiers et arrondi sur salaire": "question_36_dons",
"Appels à projets": "question_36_projet",
"Evénements caritatifs (course solidaires…)": "question_36_events",
"Team-building solidaires": "question_36_teamB",
"Aide et insertion des réfugiés": "question_37_aide",
"Arts, culture et patrimoine": "question_37_art",
"Éducation et égalité des chances": "question_37_education",
"Égalité des genres": "question_37_egalite",
"Emploi et insertion professionnelle": "question_37_emploi",
"Entrepreneuriat et création d'activité": "question_37_entreprenariat",
"Environnement et biodiversité": "question_37_environnement",
"Handicap": "question_37_handicap",
"Lien social et intergénérationnel": "question_37_lien",
"Lutte contre les discriminations": "question_37_lutte",
"Pauvreté et précarité": "question_37_pauvrete",
"Protection des animaux": "question_37_protection",
"Santé": "question_37_sante",
"Solidarité internationale": "question_37_solidarite",
"On arrive à la toute fin ! Petite question bonus 🎁\n\nQuelle est *votre plus grande fierté* en matière de RSE et d'impact chez {{hidden:name_entreprise}} ?" : "Quelle est *votre plus grande fierté* en matière de RSE et d'impact"
}
df_2022.rename(columns=col_name_2022, inplace=True)
# Check des valeurs maquantes
def filling_factor(df):
missing_df = df.isnull().sum(axis=0).reset_index()
missing_df.columns = ['column_name', 'missing_count']
missing_df['filling_factor'] = (df.shape[0]-missing_df['missing_count'])/df.shape[0]*100
missing_df = missing_df.sort_values('filling_factor').reset_index(drop = True)
return missing_df
filling_factor(df_2022)
| column_name | missing_count | filling_factor | |
|---|---|---|---|
| 0 | Votre entreprise s'est-elle fixée des *objecti... | 1134 | 27.261065 |
| 1 | Quels sujets abordez-vous avec vos équipes aut... | 943 | 39.512508 |
| 2 | Quelle est *votre plus grande fierté* en matiè... | 877 | 43.745991 |
| 3 | question_14_impact | 845 | 45.798589 |
| 4 | A quel *département* est intégrée l'équipe RSE ? | 796 | 48.941629 |
| ... | ... | ... | ... |
| 91 | question_12_BCorp | 492 | 68.441309 |
| 92 | question_12_entreprise_mission | 492 | 68.441309 |
| 93 | question_13_invest | 492 | 68.441309 |
| 94 | question_10_candidats | 492 | 68.441309 |
| 95 | 0 | 100.000000 |
96 rows × 3 columns
print('Initial shape', df_2022.shape)
# Filtre des tests
df_2022['submitted_at'] = pd.to_datetime(df_2022['submitted_at'], format='%d/%m/%Y %H:%M:%S')
df_2022 = df_2022.loc[(df_2022['submitted_at'] >= '2022-06-08')]
print('test filter shape', df_2022.shape)
# Drop line avec plus de 70% de valeurs manquantes
df_2022= df_2022[df_2022.isnull().mean(axis=1) < .7]
print('Line NaN filter shape', df_2022.shape)
# filtre des doublons
df_2022.sort_values(by='submitted_at', inplace=True)
df_2022.drop_duplicates('email', keep = 'last', inplace=True)
print('Duplicated filter shape', df_2022.shape)
Initial shape (1559, 96) test filter shape (911, 96) Line NaN filter shape (911, 96) Duplicated filter shape (793, 96)
df_2022 = df_2022.drop(["email"], axis=1)
# Suppression valeurs abérrantes
df_2022 = df_2022[-df_2022["secteur"].isin(['JE NE TRAVAILLE PAS'])]
filling_factor(df_2022)
| column_name | missing_count | filling_factor | |
|---|---|---|---|
| 0 | Votre entreprise s'est-elle fixée des *objecti... | 435 | 45.075758 |
| 1 | Quels sujets abordez-vous avec vos équipes aut... | 273 | 65.530303 |
| 2 | question_14_impact | 270 | 65.909091 |
| 3 | A quel *département* est intégrée l'équipe RSE ? | 234 | 70.454545 |
| 4 | Quelle est *votre plus grande fierté* en matiè... | 225 | 71.590909 |
| ... | ... | ... | ... |
| 90 | Avez-vous déjà mis en place des actions pour l... | 0 | 100.000000 |
| 91 | Avez-vous déjà mis en place des actions autour... | 0 | 100.000000 |
| 92 | Avez-vous déjà mis en place des actions pour l... | 0 | 100.000000 |
| 93 | Avez-vous déjà mis en place des actions autour... | 0 | 100.000000 |
| 94 | Avez-vous déjà mené des actions de *sensibilis... | 0 | 100.000000 |
95 rows × 3 columns
# Visualise and check NaN
plt.figure(figsize=(45,10))
sns.heatmap(df_2022.isna(), cmap="Blues_r", cbar=False)
plt.show()
df_2022.replace(to_replace="Je ne sais pas",
value=np.nan,
inplace=True)
#df_2022.to_csv('df_2022.csv', encoding = 'utf-8-sig')
#files.download('df_2022.csv')
# Catégorisation des rôles
display(df_2022['role'].unique())
old_role_values = ['qualité, sécurité et RSE',
'RQSE',
"QSE",
"QHSE & Campus responsables",
"Animatrice QSE ALTERNANTE Mastère spécialisé QSE",
"Responsable QHSE",
"QHSSE",
"HSSE",
"Animatrice QHSE",
"Direction HSE RSE",
"Qhse rse",
"Qhse",
"HSE"]
new_role_value = 'QHSE'
df_2022['role_v2'] = df_2022['role'].replace(old_role_values, new_role_value)
df_2022['role_v2'] = df_2022['role_v2'].replace(["consultant", "Consultante"], "Consultant")
array(['RSE / CSR', 'Ressources humaines / Talent Acquisition',
'Direction Générale / COMEX', 'Dirigeante Antenne', 'Création',
'Communication / Marketing', 'Fondation', 'QHSE', 'Technicien',
'Chef de Produit',
'Manager Green IT en partie en charge de la RSE',
'Opérateur de test', 'Coach agile en CDI', 'office manager',
'FINANCE ADMINISTRATIF', 'Ventes', 'Thermicien',
'Auto-entrepreneuse', 'Analyse financière', 'Consultant',
"Chargé d'études", 'conformité', nan, 'Office Manager',
'assistante commerciale', "Stagiaire au bureau d'études",
'Consultante', 'Investissement', 'qualité, sécurité et RSE',
'Cheffe de service', 'ACHATS', 'Commerce', 'CSE', 'Manager',
'Personnel', "Dirigeante créatrice de l'entreprise",
'Chargé de développement', 'Digital Transformation Manager',
'Auto-entrepreneur', 'Office and Happiness Manager',
'Engineering Manager',
'consultante - fondatrice communauté climat & écologie',
'Portfolio Management', 'QSE', 'Chargée de missions',
'Employee Experience', 'Commerciale', "Directeur d'hôtel",
'présidente', 'Directeur IT',
"Apprenti Polyvalent et projet d'écolabellisation)", 'Design',
'Sales', 'Responsable Commercial', 'Innovation project manager',
'Program manager', 'Head of Impact', 'RQSE', 'consultant',
'Directrice Adjointe', 'Chef de projet', 'Ingénieur',
'Pilote RSE et Delivery Manager', 'Responsable qualité',
'Appui et compétences (RH, SI, environnement)',
'Consultant Sénior', 'Administration générale',
'QHSE & Campus responsables',
'Animatrice QSE ALTERNANTE Mastère spécialisé QSE', 'collection',
'stagiaire', 'Key Account Manager', 'Commercial',
'Responsable QHSE', 'QHSSE', 'Transition écologique',
'Tourisme solidaire et philanthropique',
'Cheffe de Projet chargée de développement et RSE', 'HSSE',
"Etude d'impact", 'Achats',
'Chargée de recherche de fonds et responsable partenariat',
'projets', 'Produit', 'Directrice de Mission', 'Vente',
'Office manager _ Resp Compta et Admin', "chargée d'affaires",
'Commerce / RSE', 'RESPONSABLE COMMERCIALE', 'développement offr',
'Oenologue', 'Consultant RSE et amélioration Continue',
'Communication interne & RSE',
'Collaborateur audit financier et RSE', 'Technicien principal',
'Qhse rse', 'Auto entrepreneur', 'Qualité', 'Animatrice QHSE',
'Responsable Qualité',
'Formatrice des équipes au service client (+petite équipe RSE en parallèle)',
'Direction HSE RSE', "+Direction de l'organisation", 'iM',
'Excellence Opérationnelle', 'gestion / finance',
'Responsable Recherche et Innovation', 'chargée de missions',
'Business designer', 'juriste', 'Responsable engagement',
'Assistante', 'HSE', 'Qhse', 'REFERENTE PEDAGOGIQUE',
'R&D Wellbeing (contribue à la RSE)', 'Directeur innovation',
'Country Manager', 'Responsable Innovation et communication',
'Innovation', 'Gestionnaire administrative RH'], dtype=object)
#Remplacement de certaines valeurs par "autres"
df_2022['role_v2'] = np.where(df_2022['role_v2'].isin(['RSE / CSR','Direction Générale / COMEX', "Communication / Marketing", "Ressources humaines / Talent Acquisition", "QHSE", "Fondation", "Consultant", "CSE"]), df_2022['role_v2'], 'Autres')
df_2022['role_v2'].value_counts()
RSE / CSR 343 Direction Générale / COMEX 167 Autres 101 Communication / Marketing 71 Ressources humaines / Talent Acquisition 66 QHSE 18 Fondation 12 Consultant 7 CSE 7 Name: role_v2, dtype: int64
df_2022['role_v2'].value_counts().to_frame()
| role_v2 | |
|---|---|
| RSE / CSR | 343 |
| Direction Générale / COMEX | 167 |
| Autres | 101 |
| Communication / Marketing | 71 |
| Ressources humaines / Talent Acquisition | 66 |
| QHSE | 18 |
| Fondation | 12 |
| Consultant | 7 |
| CSE | 7 |
%%capture
!pip install kaleido
!pip install plotly>=4.0.0
!wget https://github.com/plotly/orca/releases/download/v1.2.1/orca-1.2.1-x86_64.AppImage -O /usr/local/bin/orca
!chmod +x /usr/local/bin/orca
!apt-get install xvfb libgtk2.0-0 libgconf-2-4
# Répartition des répondant·es en fonction de leur rôle dans l'entreprise
import plotly.graph_objects as go
from plotly.subplots import make_subplots
labels = ["RSE / CSR", "Direction Générale / COMEX", "Autres", "Communication / Marketing", "Ressources humaines / Talent Acquisition", "QHSE", "Fondation", "CSE", "Consultant"]
# Subplots
fig = make_subplots(rows=1, cols=1, specs=[[{'type':'domain'}]])
fig.add_trace(go.Pie(labels=labels, values=df_2022['role_v2'].value_counts(), name="Rôle"), 1, 1)
# Donut
fig.update_traces(hole=.4, hoverinfo="label+percent+name")
fig.update_layout(
title_text="Répartition des répondant·es en fonction de leur rôle dans l'entreprise")
fig.show()
# Export figures
fig.write_image("question_1_donut.png")
from IPython.display import Image
Image("question_1_donut.png")
files.download("question_1_donut.png")
# Barplot de la même question
# Librairies
import pandas as pd
import matplotlib.pyplot as plt
# Taille fig
plt.figure(figsize=(25,8))
# Barplot
plt.barh(y=["RSE / CSR", "Direction Générale / COMEX", "Autres", "Communication / Marketing", "Ressources humaines / Talent Acquisition", "QHSE", "Fondation", "CSE", "Consultant"], width=df_2022['role_v2'].value_counts())
# Titre
plt.title("Répartition des répondant·es en fonction de leur rôle dans l'entreprise")
plt.savefig("question_1_2022.svg")
files.download("question_1_2022.svg")
plt.savefig("question_1_2022.png")
files.download("question_1_2022.png")
# Catégorisation en fonction de la taille des entreprises
myCoding = {'Moins de 10' : 'TPE', '11 à 50' : 'PME', '51 à 200' : 'PME', '201 à 1000' : 'ETI', '1001 à 5000' : 'ETI', 'Plus de 5000' : 'Grand groupe'}
df_2022["categ_taille_entreprises"] = df_2022["taille_entreprise"].replace(myCoding)
# Classification en fonction de la taille des entreprises
taille_ent = df_2022['categ_taille_entreprises'].value_counts().to_frame()
taille_ent = taille_ent.reset_index()
taille_ent.rename(columns={'index':'Taille entreprise'}, inplace=True)
display(taille_ent['Taille entreprise'].unique())
taille_ent['Taille entreprise'] = pd.Categorical(taille_ent['Taille entreprise'],categories=["TPE",'PME','ETI', 'Grand groupe'])
taille_ent = taille_ent.sort_values('Taille entreprise')
display(taille_ent)
array(['PME', 'ETI', 'TPE', 'Grand groupe'], dtype=object)
| Taille entreprise | categ_taille_entreprises | |
|---|---|---|
| 2 | TPE | 121 |
| 0 | PME | 376 |
| 1 | ETI | 240 |
| 3 | Grand groupe | 54 |
# Répartition de taille d'entreprises répondantes
# Subplots
fig = make_subplots(rows=1, cols=1, specs=[[{'type':'domain'}]])
fig.add_trace(go.Pie(labels=taille_ent["Taille entreprise"], values=taille_ent['categ_taille_entreprises'], name="Catégorie", sort=False), 1, 1)
# Donut
fig.update_traces(hole=.4, hoverinfo="label+percent+name")
fig.update_layout(title_text="Répartition de taille d'entreprises répondantes")
fig.show()
# Export figures
fig.write_image("question_2_donut.png")
from IPython.display import Image
Image("question_2_donut.png")
files.download("question_2_donut.png")
# Secteurs principaux travaillent les répondant·es du Baromètre
df_2022['secteur_v2'] = np.where(df_2022['secteur'].isin(['Conseil / Etudes','Tech / Digital / Informatique', "Commerce / Négoce / Distribution", "Banque / Assurance / Finance / Mutuelle", "BTP / Construction / Immobilier", "Edition / Communication / Multimédia", "Agro-alimentaire", "Tourisme / Hôtellerie / Restauration", "Santé / Action sociale", "Enseignement / Formation", "Transports / Logistiques", "ESS / Développement durable", "Ressources humaines / QVT / RSE", "Energie / Eau / Assainissement", "Mode / Textile", "Culture / Sports / Loisirs", "Industrie pharmaceutique", "Administration publique", "Machines et équipements / Automobile", "Chimie"]), df_2022['secteur'], 'Autres')
display(df_2022['secteur_v2'].value_counts())
Conseil / Etudes 134 Tech / Digital / Informatique 110 Autres 84 Commerce / Négoce / Distribution 61 Banque / Assurance / Finance / Mutuelle 53 BTP / Construction / Immobilier 45 Edition / Communication / Multimédia 41 Agro-alimentaire 40 Tourisme / Hôtellerie / Restauration 30 Santé / Action sociale 28 Enseignement / Formation 22 Transports / Logistiques 21 ESS / Développement durable 20 Ressources humaines / QVT / RSE 18 Mode / Textile 15 Energie / Eau / Assainissement 15 Industrie pharmaceutique 13 Culture / Sports / Loisirs 13 Administration publique 10 Machines et équipements / Automobile 10 Chimie 9 Name: secteur_v2, dtype: int64
df_2022['secteur_v2'].value_counts().to_frame()
| secteur_v2 | |
|---|---|
| Conseil / Etudes | 134 |
| Tech / Digital / Informatique | 110 |
| Autres | 84 |
| Commerce / Négoce / Distribution | 61 |
| Banque / Assurance / Finance / Mutuelle | 53 |
| BTP / Construction / Immobilier | 45 |
| Edition / Communication / Multimédia | 41 |
| Agro-alimentaire | 40 |
| Tourisme / Hôtellerie / Restauration | 30 |
| Santé / Action sociale | 28 |
| Enseignement / Formation | 22 |
| Transports / Logistiques | 21 |
| ESS / Développement durable | 20 |
| Ressources humaines / QVT / RSE | 18 |
| Mode / Textile | 15 |
| Energie / Eau / Assainissement | 15 |
| Industrie pharmaceutique | 13 |
| Culture / Sports / Loisirs | 13 |
| Administration publique | 10 |
| Machines et équipements / Automobile | 10 |
| Chimie | 9 |
# Secteurs principaux travaillent les répondant·es du Baromètre 2
labels = ["Conseil / Etudes", "Tech / Digital / Informatique", "Autres", "Commerce / Négoce / Distribution", "Banque / Assurance / Finance / Mutuelle", "BTP / Construction / Immobilier", "Edition / Communication / Multimédia", "Agro-alimentaire", "Tourisme / Hôtellerie / Restauration", "Santé / Action sociale", "Enseignement / Formation", "Transports / Logistiques", "ESS / Développement durable", "Ressources humaines / QVT / RSE", "Energie / Eau / Assainissement", "Mode / Textile", "Industrie pharmaceutique", "Culture / Sports / Loisirs", "Administration publique", "Machines et équipements / Automobile", "Chimie"]
# Subplots
fig = make_subplots(rows=1, cols=1, specs=[[{'type':'domain'}]])
fig.add_trace(go.Pie(labels=labels, values=df_2022['secteur_v2'].value_counts(), name="A quel *secteur* appartient {{field:535b54cf-1d17-4acb-b449-f4a2e0d70888}} ?"), 1, 1)
# Donut
fig.update_traces(hole=.4, hoverinfo="label+percent+name")
fig.update_layout(
title_text="Secteurs principaux travaillent les répondant·es du Baromètre")
fig.show()
# Export figures
fig.write_image("question_3_donut.png")
from IPython.display import Image
Image("question_3_donut.png")
files.download("question_3_donut.png")
# Classification taille équipe
equipe = df_2022['equipe_RSE'].value_counts().to_frame()
equipe = equipe.reset_index()
equipe.rename(columns={'index':'Taille équipe'}, inplace=True)
display(equipe['Taille équipe'].unique())
equipe["Taille équipe"] = pd.Categorical(equipe["Taille équipe"],categories=["Il n'y a pas d'équipe dédiée",'1-2','3-5', '6-10', '>10'])
equipe = equipe.sort_values('Taille équipe')
display(equipe)
array(['1-2', "Il n'y a pas d'équipe dédiée", '3-5', '6-10', '>10'],
dtype=object)
| Taille équipe | equipe_RSE | |
|---|---|---|
| 1 | Il n'y a pas d'équipe dédiée | 233 |
| 0 | 1-2 | 363 |
| 2 | 3-5 | 114 |
| 3 | 6-10 | 45 |
| 4 | >10 | 25 |
# Répartition de taille des équipes RSE des entreprises répondantes
# Subplots
fig = make_subplots(rows=1, cols=1, specs=[[{'type':'domain'}]])
fig.add_trace(go.Pie(labels=["Il n'y a pas d'équipe dédiée",'1-2','3-5', '6-10', '>10'], values=equipe['equipe_RSE'], name="Catégorie", sort=False), 1, 1)
# Donut
fig.update_traces(hole=.4, hoverinfo="label+percent+name")
fig.update_layout(
title_text="Taille des équipes RSE")
fig.show()
# Export figures
fig.write_image("question_4_donut.png")
from IPython.display import Image
Image("question_4_donut.png")
files.download("question_4_donut.png")
df_2022["dep_RSE"] = df_2022["A quel *département* est intégrée l'équipe RSE ?"]
df_2022["dep_RSE"] = df_2022["dep_RSE"].fillna(0)
df_2022["dep_RSE"]
102 La fonction RSE est autonome
93 A la Direction Générale
88 Au pôle RH
78 0
84 0
...
1550 A la Direction Générale
1555 La fonction RSE est autonome
1557 0
480 A la Direction Générale
1558 0
Name: dep_RSE, Length: 792, dtype: object
df_2022["dep_RSE"] = df_2022["dep_RSE"].replace(["QHSE", "QSE", "qualité", "Au QHSE", "HSE", "Qualité (QHSE)", "QSE RSE prévention", "RQHSE", "Qualité" "Département QHSE-RSE", "Direction Qualité - Sécurité","Direction Qualité", "au pôle qualité", "la fonction Qualité et Conformité"], "QSE / HSE / QHSE / Qualité")
df_2022["dep_RSE"] = df_2022["dep_RSE"].replace(["Secrétariat geberal", "secretariat general", "Secrétariat Général", "SECRÉTARIAT GÉNÉRAL", "Secrétariat général"], "Secrétariat Général")
df_2022["dep_RSE"] = df_2022["dep_RSE"].replace(["RH et Administration Générale"], "Au pôle RH")
df_2022["dep_RSE"] = df_2022["dep_RSE"].replace(["Innovation", "direction ingénieurie et performance industrielle", "R&D", "intégrée au département Technique Innovation et Développement Durable", "Marketing Innovation", "Pôle innovation","Direction innovation et développement durable", "Mission secondaire de la R&I", "RSE et open innovation", "direction ingéniérie et performance industrielle"], "Innovation / R&D")
df_2022["dep_RSE"] = df_2022["dep_RSE"].replace(["Opération",
"operations",
"A la direction excellence opérationnelle",
"Équipe Opérations (car je suis aussi responsable qualité)"], "Opérations")
df_2022["dep_RSE"] = df_2022["dep_RSE"].replace(["Finance",
"CFO (fonctions supports)",
"Admin & Finance",
"Direction financière",
"Juridique",
"Pole Admin/finance",
"CFO (fonctions supports)"], "Finance / Admin / CFO / Juridique")
df_2022["dep_RSE"] = df_2022["dep_RSE"].replace(["Groupe de projets de plusieurs profils",
"équipe transversale",
"Plusieurs pôles RSE",
"Nous sommes une agence spécialisée en RSE. Tous nos collaborateurs sont engagés dans la démarche.",
"1 Membre RH + 1 Membre de la DG + 1 stagiaire autonome",
"Transverse",
"a l'ensemble de l'equipe, coordonnée par un chef de projet",
"Chaque membre appartient à une filière différente de BGE PICARDIE",
"8 collaborateurs en transverse",
"Com° + Qualité + CSE + Direction",
"Plusieurs: Il y a un département RSE mais aussi des personnes intégrées à l'équipe RH sur les questions de diversité et de santé et sécurité",
"Différents postes",
"plusieurs départements RH, COMM, Green Team, Green champions Etc",
"Pôle innovation RH et numérique",
"c'est une équipe projet en plus de nos fonctions",
"Equipe indépendante de personnes qui souhaitent travailler sur ce sujet",
"Plusieurs pôles RSE",
"Groupe de projets de plusieurs profils"], "Transverses")
df_2022["dep_RSE"] = df_2022['dep_RSE'] = np.where(df_2022['dep_RSE'].isin(['A la Direction Générale',
'La fonction RSE est autonome',
"Au pôle RH",
"Au pôle communication",
"QSE / HSE / QHSE / Qualité",
"Secrétariat Général",
"Innovation / R&D",
"Opérations",
"Finance / Admin / CFO / Juridique",
"Transverses", 0]), df_2022['dep_RSE'], 'Autres')
question_5 = df_2022["dep_RSE"].value_counts().to_frame()
question_5.reset_index()
question_5 = question_5.drop(labels=0, axis=0)
question_5
| dep_RSE | |
|---|---|
| A la Direction Générale | 173 |
| La fonction RSE est autonome | 143 |
| Au pôle RH | 70 |
| Au pôle communication | 48 |
| Autres | 39 |
| QSE / HSE / QHSE / Qualité | 21 |
| Transverses | 16 |
| Innovation / R&D | 10 |
| Opérations | 8 |
| Finance / Admin / CFO / Juridique | 8 |
| Secrétariat Général | 4 |
# Département de l'équipe RSE
# Subplots
fig = make_subplots(rows=1, cols=1, specs=[[{'type':'domain'}]])
fig.add_trace(go.Pie(labels=question_5.index, values=question_5["dep_RSE"], name="Département"), 1, 1)
# Donut
fig.update_traces(hole=.4, hoverinfo="label+percent+name")
fig.update_layout(
title_text="Département de l'équipe RSE")
fig.show()
# Export figures
fig.write_image("question_5_donut.png")
from IPython.display import Image
Image("question_5_donut.png")
files.download("question_5_donut.png")
question_5_perc = question_5.div(question_5["dep_RSE"].sum())*100
question_5_perc
| dep_RSE | |
|---|---|
| A la Direction Générale | 32.037037 |
| La fonction RSE est autonome | 26.481481 |
| Au pôle RH | 12.962963 |
| Au pôle communication | 8.888889 |
| Autres | 7.222222 |
| QSE / HSE / QHSE / Qualité | 3.888889 |
| Transverses | 2.962963 |
| Innovation / R&D | 1.851852 |
| Opérations | 1.481481 |
| Finance / Admin / CFO / Juridique | 1.481481 |
| Secrétariat Général | 0.740741 |
# plot bar chart
question_5_perc["dep_RSE"].plot.bar()
plt.title("Département de l'équipe RSE")
# Export fichier
#plt.savefig("question_5_2022.svg", bbox_inches='tight')
#files.download("question_5_2022.svg")
#plt.savefig("question_5_2022.png", bbox_inches='tight')
#files.download("question_5_2022.png")
Text(0.5, 1.0, "Département de l'équipe RSE")
df_2022["La RSE est-elle directement représentée au sein du *COMEX* ?"].value_counts()
Oui 421 Non 246 Non pertinent 78 Name: La RSE est-elle directement représentée au sein du *COMEX* ?, dtype: int64
df_2022["rep_COMEX"] = df_2022["La RSE est-elle directement représentée au sein du *COMEX* ?"]
question_6 = df_2022[["rep_COMEX"]]
question_6 = question_6[question_6.rep_COMEX != "Non pertinent"]
question_6.value_counts()
rep_COMEX Oui 421 Non 246 dtype: int64
# RSE et COMEX
labels = ['Oui', "Non"]
# Subplots
fig = make_subplots(rows=1, cols=1, specs=[[{'type':'domain'}]])
fig.add_trace(go.Pie(labels=labels, values=question_6.rep_COMEX.value_counts(), name="Catégorie"), 1, 1)
# Donut
fig.update_traces(hole=.4, hoverinfo="label+percent+name")
fig.update_layout(
title_text="La RSE est-elle directement représentée au sein du COMEX ?")
fig.show()
# Export figures
fig.write_image("question_6_donut.png")
from IPython.display import Image
Image("question_6_donut.png")
files.download("question_6_donut.png")
df_2022['Quel est le *budget annuel* mis à disposition de votre département RSE ?'].value_counts()
Aucun budget 184 De 1 à 5 000€ 140 De 5 000 à 20 000€ 109 De 20 000 à 50 000€ 61 Plus de 100 000€ 56 Je ne souhaite pas partager ce chiffre 52 De 50 000 à 100 000€ 28 Name: Quel est le *budget annuel* mis à disposition de votre département RSE ?, dtype: int64
# Budget annuel
budget = df_2022['Quel est le *budget annuel* mis à disposition de votre département RSE ?'].value_counts().to_frame().reset_index()
budget = budget.drop(labels=5, axis=0)
budget
| index | Quel est le *budget annuel* mis à disposition de votre département RSE ? | |
|---|---|---|
| 0 | Aucun budget | 184 |
| 1 | De 1 à 5 000€ | 140 |
| 2 | De 5 000 à 20 000€ | 109 |
| 3 | De 20 000 à 50 000€ | 61 |
| 4 | Plus de 100 000€ | 56 |
| 6 | De 50 000 à 100 000€ | 28 |
budget.rename(columns={'index':'Budget'}, inplace=True)
display(budget.Budget.unique())
budget.Budget = pd.Categorical(budget.Budget,categories=["Aucun budget",'De 1 à 5 000€','De 5 000 à 20 000€', 'De 20 000 à 50 000€', 'De 50 000 à 100 000€', "Plus de 100 000€", "Je ne souhaite pas partager ce chiffre"])
budget = budget.sort_values('Budget')
display(budget)
array(['Aucun budget', 'De 1 à 5 000€', 'De 5 000 à 20 000€',
'De 20 000 à 50 000€', 'Plus de 100 000€', 'De 50 000 à 100 000€'],
dtype=object)
| Budget | Quel est le *budget annuel* mis à disposition de votre département RSE ? | |
|---|---|---|
| 0 | Aucun budget | 184 |
| 1 | De 1 à 5 000€ | 140 |
| 2 | De 5 000 à 20 000€ | 109 |
| 3 | De 20 000 à 50 000€ | 61 |
| 6 | De 50 000 à 100 000€ | 28 |
| 4 | Plus de 100 000€ | 56 |
# Répartition des montants de budget des entreprises répondantes dédiés à la RSE
# Subplots
fig = make_subplots(rows=1, cols=1, specs=[[{'type':'domain'}]])
fig.add_trace(go.Pie(labels=budget.Budget, values= budget["Quel est le *budget annuel* mis à disposition de votre département RSE ?"], name="Quel est le *budget annuel* mis à disposition de votre département RSE ?", sort=False), 1, 1)
# Donut
fig.update_traces(hole=.4, hoverinfo="label+percent+name")
fig.update_layout(title_text="Répartition des montants de budget des entreprises répondantes dédiés à la RSE")
fig.show()
# Export figures
fig.write_image("question_7_donut.png")
from IPython.display import Image
Image("question_7_donut.png")
files.download("question_7_donut.png")
df_2022['question_8_finance_admin'].value_counts()
Favorable 328 Indifférent 207 Moteur 127 Non pertinent 111 Réfractaire 18 Name: question_8_finance_admin, dtype: int64
import pandas as pd
# Sélection des colonnes pertinentes pour la question 8
question_8 = df_2022[['question_8_COMEX', 'question_8_salaries', 'question_8_middle_management', 'question_8_achats', 'question_8_RH', 'question_8_com_market', 'question_8_commercial', 'question_8_prod', 'question_8_finance_admin']]
display(question_8.head())
# Pivot de la table
question_8 = question_8.apply(pd.Series.value_counts).fillna(0).astype(int)
# Renommage de la première colonne et pivot
question_8 = question_8.reset_index()
question_8.rename(columns={'index':'Réponse'}, inplace=True)
question_8 = question_8.pivot_table(columns='Réponse')
question_8.drop("Non pertinent", inplace = True, axis = 1)
question_8 = question_8.reindex(['Moteur', "Favorable", "Indifférent", "Réfractaire"], axis=1)
question_8
| question_8_COMEX | question_8_salaries | question_8_middle_management | question_8_achats | question_8_RH | question_8_com_market | question_8_commercial | question_8_prod | question_8_finance_admin | |
|---|---|---|---|---|---|---|---|---|---|
| 102 | Non pertinent | Favorable | Indifférent | Réfractaire | Favorable | Favorable | Favorable | Non pertinent | Indifférent |
| 93 | Favorable | Favorable | Favorable | Non pertinent | Non pertinent | Moteur | Moteur | Favorable | Non pertinent |
| 88 | Favorable | Favorable | Indifférent | Indifférent | Moteur | Favorable | Favorable | Indifférent | Indifférent |
| 78 | Non pertinent | Non pertinent | Non pertinent | Non pertinent | Non pertinent | Non pertinent | Non pertinent | Non pertinent | Non pertinent |
| 84 | Favorable | Non pertinent | Non pertinent | Non pertinent | Non pertinent | Non pertinent | Non pertinent | Non pertinent | Non pertinent |
| Réponse | Moteur | Favorable | Indifférent | Réfractaire |
|---|---|---|---|---|
| question_8_COMEX | 324 | 292 | 71 | 9 |
| question_8_RH | 308 | 291 | 69 | 7 |
| question_8_achats | 171 | 278 | 126 | 17 |
| question_8_com_market | 362 | 282 | 66 | 2 |
| question_8_commercial | 132 | 328 | 172 | 17 |
| question_8_finance_admin | 127 | 328 | 207 | 18 |
| question_8_middle_management | 140 | 379 | 148 | 5 |
| question_8_prod | 90 | 276 | 185 | 17 |
| question_8_salaries | 218 | 429 | 106 | 2 |
question_8_perc = question_8.div(question_8.sum(axis=1), axis=0)*100
display(question_8_perc)
# Création du stacked barplot
question_8_perc.plot(kind='bar', stacked=True)
plt.legend(bbox_to_anchor=(1.05, 1))
plt.title("Degrés d'implication des parties prenantes internes")
plt.xlabel("Parties internes")
plt.ylabel("Pourcentage cumulé")
# Export fichier
plt.savefig("question_8_2022.svg", bbox_inches='tight')
files.download("question_8_2022.svg")
plt.savefig("question_8_2022.png", bbox_inches='tight')
files.download("question_8_2022.png")
plt.show()
| Réponse | Moteur | Favorable | Indifférent | Réfractaire |
|---|---|---|---|---|
| question_8_COMEX | 46.551724 | 41.954023 | 10.201149 | 1.293103 |
| question_8_RH | 45.629630 | 43.111111 | 10.222222 | 1.037037 |
| question_8_achats | 28.885135 | 46.959459 | 21.283784 | 2.871622 |
| question_8_com_market | 50.842697 | 39.606742 | 9.269663 | 0.280899 |
| question_8_commercial | 20.338983 | 50.539291 | 26.502311 | 2.619414 |
| question_8_finance_admin | 18.676471 | 48.235294 | 30.441176 | 2.647059 |
| question_8_middle_management | 20.833333 | 56.398810 | 22.023810 | 0.744048 |
| question_8_prod | 15.845070 | 48.591549 | 32.570423 | 2.992958 |
| question_8_salaries | 28.874172 | 56.821192 | 14.039735 | 0.264901 |
df_2022['question_10_etat_co_publiques'].value_counts()
Ils ne connaissent pas nos actions 309 Ils connaissent nos actions 248 Non pertinent 150 Ils participent à nos actions RSE 84 Name: question_10_etat_co_publiques, dtype: int64
import pandas as pd
# Sélection des colonnes pertinentes pour la question 10
question_10 = df_2022[['question_10_etat_co_publiques', 'question_10_conso_clients', 'question_10_ss_traitants', 'question_10_candidats', 'question_10_citoyens', 'question_10_actionnaires']]
display(question_10.head())
# Pivot de la table
question_10 = question_10.apply(pd.Series.value_counts).fillna(0).astype(int)
# Renommage de la première colonne et pivot
question_10 = question_10.reset_index()
question_10.rename(columns={'index':'Réponse'}, inplace=True)
question_10 = question_10.pivot_table(columns='Réponse')
question_10.drop("Non pertinent", inplace = True, axis = 1)
question_10 = question_10.reindex(["Ils connaissent nos actions", "Ils participent à nos actions RSE", "Ils ne connaissent pas nos actions"], axis=1)
question_10
| question_10_etat_co_publiques | question_10_conso_clients | question_10_ss_traitants | question_10_candidats | question_10_citoyens | question_10_actionnaires | |
|---|---|---|---|---|---|---|
| 102 | Ils ne connaissent pas nos actions | Ils ne connaissent pas nos actions | Ils ne connaissent pas nos actions | Ils connaissent nos actions | Ils ne connaissent pas nos actions | Ils connaissent nos actions |
| 93 | Ils ne connaissent pas nos actions | Ils connaissent nos actions | Ils participent à nos actions RSE | Ils connaissent nos actions | Ils connaissent nos actions | Ils participent à nos actions RSE |
| 88 | Ils connaissent nos actions | Ils connaissent nos actions | Ils connaissent nos actions | Ils connaissent nos actions | Ils ne connaissent pas nos actions | Ils connaissent nos actions |
| 78 | Non pertinent | Ils participent à nos actions RSE | Ils participent à nos actions RSE | Non pertinent | Non pertinent | Non pertinent |
| 84 | Ils ne connaissent pas nos actions | Ils ne connaissent pas nos actions | Ils ne connaissent pas nos actions | Ils ne connaissent pas nos actions | Ils ne connaissent pas nos actions | Non pertinent |
| Réponse | Ils connaissent nos actions | Ils participent à nos actions RSE | Ils ne connaissent pas nos actions |
|---|---|---|---|
| question_10_actionnaires | 299 | 189 | 89 |
| question_10_candidats | 444 | 63 | 214 |
| question_10_citoyens | 169 | 35 | 396 |
| question_10_conso_clients | 410 | 147 | 195 |
| question_10_etat_co_publiques | 248 | 84 | 309 |
| question_10_ss_traitants | 258 | 144 | 291 |
question_10_perc = question_10.div(question_10.sum(axis=1), axis=0)*100
display(question_10_perc)
question_10_perc.plot(kind='bar', stacked=True)
plt.legend(bbox_to_anchor=(1.05, 1))
plt.title("Degrés d'implication des parties prenantes externes")
plt.xlabel("Parties externes")
plt.ylabel("Pourcentage cumulé")
# Export fichier
plt.savefig("question_10_2022.svg", bbox_inches='tight')
files.download("question_10_2022.svg")
plt.savefig("question_10_2022.png", bbox_inches='tight')
files.download("question_10_2022.png")
plt.show()
| Réponse | Ils connaissent nos actions | Ils participent à nos actions RSE | Ils ne connaissent pas nos actions |
|---|---|---|---|
| question_10_actionnaires | 51.819757 | 32.755633 | 15.424610 |
| question_10_candidats | 61.581137 | 8.737864 | 29.680999 |
| question_10_citoyens | 28.166667 | 5.833333 | 66.000000 |
| question_10_conso_clients | 54.521277 | 19.547872 | 25.930851 |
| question_10_etat_co_publiques | 38.689548 | 13.104524 | 48.205928 |
| question_10_ss_traitants | 37.229437 | 20.779221 | 41.991342 |
df_2022["Aujourd'hui, selon vous, quelle proportion de salariés est *impliquée dans votre démarche RSE *?"].value_counts()
Une petite partie - Entre 5 et 25% des salariés 271 Très peu de salariés - Moins de 5% 164 Presque tous les salariés - Plus de 75% 120 Près de la moitié - Entre 25 et 50% 100 Plus de la moitié - Entre 50 et 75% 77 Non pertinent chez nous 35 Name: Aujourd'hui, selon vous, quelle proportion de salariés est *impliquée dans votre démarche RSE *?, dtype: int64
# Classification des catégories
demarche = df_2022["Aujourd'hui, selon vous, quelle proportion de salariés est *impliquée dans votre démarche RSE *?"].value_counts().to_frame()
demarche = demarche.reset_index()
demarche = demarche.drop(labels=5, axis=0)
demarche
| index | Aujourd'hui, selon vous, quelle proportion de salariés est *impliquée dans votre démarche RSE *? | |
|---|---|---|
| 0 | Une petite partie - Entre 5 et 25% des salariés | 271 |
| 1 | Très peu de salariés - Moins de 5% | 164 |
| 2 | Presque tous les salariés - Plus de 75% | 120 |
| 3 | Près de la moitié - Entre 25 et 50% | 100 |
| 4 | Plus de la moitié - Entre 50 et 75% | 77 |
demarche.rename(columns={'index':'Proportion'}, inplace=True)
display(demarche['Proportion'].unique())
demarche['Proportion'] = pd.Categorical(demarche['Proportion'],categories=["Très peu de salariés - Moins de 5%",
'Une petite partie - Entre 5 et 25% des salariés',
'Près de la moitié - Entre 25 et 50%',
'Plus de la moitié - Entre 50 et 75%',
"Presque tous les salariés - Plus de 75%"])
demarche = demarche.sort_values('Proportion')
display(demarche)
array(['Une petite partie - Entre 5 et 25% des salariés',
'Très peu de salariés - Moins de 5%',
'Presque tous les salariés - Plus de 75%',
'Près de la moitié - Entre 25 et 50%',
'Plus de la moitié - Entre 50 et 75%'], dtype=object)
| Proportion | Aujourd'hui, selon vous, quelle proportion de salariés est *impliquée dans votre démarche RSE *? | |
|---|---|---|
| 1 | Très peu de salariés - Moins de 5% | 164 |
| 0 | Une petite partie - Entre 5 et 25% des salariés | 271 |
| 3 | Près de la moitié - Entre 25 et 50% | 100 |
| 4 | Plus de la moitié - Entre 50 et 75% | 77 |
| 2 | Presque tous les salariés - Plus de 75% | 120 |
# Proportion de salariés impliquée dans la démarche RSE
# Subplots
fig = make_subplots(rows=1, cols=1, specs=[[{'type':'domain'}]])
fig.add_trace(go.Pie(labels=demarche['Proportion'], values=demarche["Aujourd'hui, selon vous, quelle proportion de salariés est *impliquée dans votre démarche RSE *?"], name="Catégorie", sort=False), 1, 1)
# Donut
fig.update_traces(hole=.4, hoverinfo="label+percent+name")
fig.update_layout(
title_text="Aujourd'hui, selon vous, quelle proportion de salariés est impliquée dans votre démarche RSE?")
fig.show()
# Export figures
fig.write_image("question_9_donut.png")
from IPython.display import Image
Image("question_9_donut.png")
files.download("question_9_donut.png")
df_2022["Est-ce que l'activité commerciale principale de votre entreprise répond à un *enjeu social ou environnemental* ?"].value_counts()
Oui 434 Non 298 Name: Est-ce que l'activité commerciale principale de votre entreprise répond à un *enjeu social ou environnemental* ?, dtype: int64
# Activité principale de l'entreprise répondant à un enjeu social ou environnemental?
labels = ["Oui", "Non"]
# Subplots
fig = make_subplots(rows=1, cols=1, specs=[[{'type':'domain'}]])
fig.add_trace(go.Pie(labels=labels, values=df_2022["Est-ce que l'activité commerciale principale de votre entreprise répond à un *enjeu social ou environnemental* ?"].value_counts(), name="Catégorie"), 1, 1)
# Donut
fig.update_traces(hole=.4, hoverinfo="label+percent+name")
fig.update_layout(
title_text="Est-ce que l'activité commerciale principale de votre entreprise répond à un enjeu social ou environnemental?")
fig.show()
# Export figures
fig.write_image("question_11_donut.png")
from IPython.display import Image
Image("question_11_donut.png")
files.download("question_11_donut.png")
import pandas as pd
# Sélection des colonnes pertinentes pour la question 12
question_12 = df_2022[['question_12_entreprise_mission', 'question_12_BCorp', 'question_12_Lucie', 'question_12_1%', 'question_12_esus']]
display(question_12.head())
# Pivot de la table
question_12 = question_12.apply(pd.Series.value_counts).fillna(0).astype(int)
# Renommage de la première colonne et pivot
question_12 = question_12.reset_index()
question_12.rename(columns={'index':'Réponse'}, inplace=True)
question_12 = question_12.pivot_table(columns='Réponse')
question_12 = question_12.reindex(["Nous le sommes déjà", "Nous sommes engagés dans le processus", "Nous y réfléchissons", "Je ne connais pas", "Pas du tout"], axis=1)
question_12
| question_12_entreprise_mission | question_12_BCorp | question_12_Lucie | question_12_1% | question_12_esus | |
|---|---|---|---|---|---|
| 102 | Pas du tout | Nous y réfléchissons | Nous y réfléchissons | Pas du tout | Pas du tout |
| 93 | Non pertinent chez nous | Non pertinent chez nous | Nous y réfléchissons | Pas du tout | Je ne connais pas |
| 88 | Non pertinent chez nous | Non pertinent chez nous | Non pertinent chez nous | Non pertinent chez nous | Non pertinent chez nous |
| 78 | Non pertinent chez nous | Non pertinent chez nous | Non pertinent chez nous | Non pertinent chez nous | Non pertinent chez nous |
| 84 | Nous y réfléchissons | Je ne connais pas | Je ne connais pas | Nous le sommes déjà | Je ne connais pas |
| Réponse | Nous le sommes déjà | Nous sommes engagés dans le processus | Nous y réfléchissons | Je ne connais pas | Pas du tout |
|---|---|---|---|---|---|
| question_12_1% | 34 | 21 | 208 | 202 | 231 |
| question_12_BCorp | 41 | 96 | 216 | 169 | 172 |
| question_12_Lucie | 22 | 20 | 176 | 239 | 227 |
| question_12_entreprise_mission | 94 | 65 | 261 | 99 | 182 |
| question_12_esus | 15 | 11 | 72 | 379 | 171 |
question_12_perc = question_12.div(question_12.sum(axis=1), axis=0)*100
display(question_12_perc)
question_12_perc.plot(kind='bar', stacked=True)
plt.legend(bbox_to_anchor=(1.05, 1))
plt.title("Graphique montrant quels labels / certifications intéressent le plus les entreprises répondantes")
plt.xlabel("Labels et certifications")
plt.ylabel("Pourcentage cumulé")
# Export fichier
plt.savefig("question_12_2022.svg", bbox_inches='tight')
files.download("question_12_2022.svg")
plt.savefig("question_12_2022.png", bbox_inches='tight')
files.download("question_12_2022.png")
plt.show()
| Réponse | Nous le sommes déjà | Nous sommes engagés dans le processus | Nous y réfléchissons | Je ne connais pas | Pas du tout |
|---|---|---|---|---|---|
| question_12_1% | 4.885057 | 3.017241 | 29.885057 | 29.022989 | 33.189655 |
| question_12_BCorp | 5.907781 | 13.832853 | 31.123919 | 24.351585 | 24.783862 |
| question_12_Lucie | 3.216374 | 2.923977 | 25.730994 | 34.941520 | 33.187135 |
| question_12_entreprise_mission | 13.409415 | 9.272468 | 37.232525 | 14.122682 | 25.962910 |
| question_12_esus | 2.314815 | 1.697531 | 11.111111 | 58.487654 | 26.388889 |
1 graphique "simple" qui montre la part d'entreprises ayant au moins 1 label / ayant 2 labels ou plus / n'ayant pas de label
additional_12 = df_2022[['question_12_entreprise_mission', 'question_12_BCorp', 'question_12_Lucie', 'question_12_1%', 'question_12_esus']]
display(additional_12.head())
| question_12_entreprise_mission | question_12_BCorp | question_12_Lucie | question_12_1% | question_12_esus | |
|---|---|---|---|---|---|
| 102 | Pas du tout | Nous y réfléchissons | Nous y réfléchissons | Pas du tout | Pas du tout |
| 93 | Non pertinent chez nous | Non pertinent chez nous | Nous y réfléchissons | Pas du tout | Je ne connais pas |
| 88 | Non pertinent chez nous | Non pertinent chez nous | Non pertinent chez nous | Non pertinent chez nous | Non pertinent chez nous |
| 78 | Non pertinent chez nous | Non pertinent chez nous | Non pertinent chez nous | Non pertinent chez nous | Non pertinent chez nous |
| 84 | Nous y réfléchissons | Je ne connais pas | Je ne connais pas | Nous le sommes déjà | Je ne connais pas |
additional_12 = additional_12.replace(["Nous le sommes déjà"], 1)
additional_12 = additional_12.replace(["Nous sommes engagés dans le processus", "Nous y réfléchissons", "Je ne connais pas", "Pas du tout", "Non pertinent chez nous"], 0)
additional_12.head()
| question_12_entreprise_mission | question_12_BCorp | question_12_Lucie | question_12_1% | question_12_esus | |
|---|---|---|---|---|---|
| 102 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 |
| 93 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 |
| 88 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 |
| 78 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 |
| 84 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 |
additional_12 = additional_12.sum(axis = 1).to_frame()
additional_12_next = additional_12.sum(axis = 1).to_frame()
additional_12 = additional_12.value_counts().to_frame()
additional_12
| 0 | |
|---|---|
| 0 | |
| 0.0 | 626 |
| 1.0 | 133 |
| 2.0 | 27 |
| 3.0 | 5 |
| 4.0 | 1 |
additional_12.rename(columns={0:'count'}, inplace=True)
additional_12 = additional_12.reset_index()
additional_12.rename(columns={0:'nb_label'}, inplace=True)
additional_12["nb_label"] = additional_12["nb_label"].astype(int)
additional_12
| nb_label | count | |
|---|---|---|
| 0 | 0 | 626 |
| 1 | 1 | 133 |
| 2 | 2 | 27 |
| 3 | 3 | 5 |
| 4 | 4 | 1 |
# Nombre de labels par entreprise
# Subplots
fig = make_subplots(rows=1, cols=1, specs=[[{'type':'domain'}]])
fig.add_trace(go.Pie(labels=additional_12.nb_label, values= additional_12['count'], name="Combien de labels par entreprises", sort=False), 1, 1)
# Donut
fig.update_traces(hole=.4, hoverinfo="label+percent+name")
fig.update_layout(title_text="Nombre de labels par entreprises répondantes")
fig.show()
# Export figures
fig.write_image("additional_12.png")
from IPython.display import Image
Image("additional_12.png")
files.download("additional_12.png")
# Tableau croisé 4/2
crossed_4_2 = pd.crosstab(df_2022.categ_taille_entreprises, df_2022.equipe_RSE)
crossed_4_2 = crossed_4_2.reindex(["TPE", "PME", "ETI", "Grand groupe"])
crossed_4_2
| equipe_RSE | 1-2 | 3-5 | 6-10 | >10 | Il n'y a pas d'équipe dédiée |
|---|---|---|---|---|---|
| categ_taille_entreprises | |||||
| TPE | 43 | 4 | 0 | 0 | 74 |
| PME | 187 | 35 | 15 | 6 | 129 |
| ETI | 124 | 57 | 18 | 8 | 29 |
| Grand groupe | 9 | 18 | 12 | 11 | 1 |
# Tableau croisé 4/2 en pourcentage
crossed_4_2_perc = pd.crosstab(df_2022.categ_taille_entreprises, df_2022.equipe_RSE, normalize='index')*100
crossed_4_2_perc = crossed_4_2_perc.reindex(["TPE", "PME", "ETI", "Grand groupe"])
crossed_4_2_perc
| equipe_RSE | 1-2 | 3-5 | 6-10 | >10 | Il n'y a pas d'équipe dédiée |
|---|---|---|---|---|---|
| categ_taille_entreprises | |||||
| TPE | 35.537190 | 3.305785 | 0.000000 | 0.000000 | 61.157025 |
| PME | 50.268817 | 9.408602 | 4.032258 | 1.612903 | 34.677419 |
| ETI | 52.542373 | 24.152542 | 7.627119 | 3.389831 | 12.288136 |
| Grand groupe | 17.647059 | 35.294118 | 23.529412 | 21.568627 | 1.960784 |
import matplotlib.pyplot as plt
# plot grouped bar chart
crossed_4_2_perc.plot.bar(rot=0)
plt.legend(bbox_to_anchor=(1.05, 1))
plt.title("Questions 4&2 : Taille de l'équipe RSE en fonction de la taille de l'entreprise")
# Export fichier
plt.savefig("crossed_4_2.svg", bbox_inches='tight')
files.download("crossed_4_2.svg")
plt.savefig("crossed_4_2.png", bbox_inches='tight')
files.download("crossed_4_2.png")
# Tableau croisé 5/2
crossed_5_2 = pd.crosstab(df_2022.categ_taille_entreprises, df_2022.dep_RSE)
crossed_5_2 = crossed_5_2.reindex(["TPE", "PME", "ETI", "Grand groupe"])
crossed_5_2 = crossed_5_2.drop(labels=0, axis=1)
crossed_5_2
| dep_RSE | A la Direction Générale | Au pôle RH | Au pôle communication | Autres | Finance / Admin / CFO / Juridique | Innovation / R&D | La fonction RSE est autonome | Opérations | QSE / HSE / QHSE / Qualité | Secrétariat Général | Transverses |
|---|---|---|---|---|---|---|---|---|---|---|---|
| categ_taille_entreprises | |||||||||||
| TPE | 28 | 1 | 3 | 0 | 0 | 1 | 12 | 0 | 0 | 0 | 1 |
| PME | 64 | 29 | 20 | 21 | 3 | 2 | 82 | 3 | 8 | 0 | 7 |
| ETI | 62 | 34 | 19 | 15 | 4 | 5 | 40 | 5 | 13 | 1 | 6 |
| Grand groupe | 19 | 6 | 6 | 3 | 1 | 2 | 9 | 0 | 0 | 3 | 2 |
# Tableau croisé 5/2 en pourcentage
crossed_5_2_perc = pd.crosstab(df_2022.categ_taille_entreprises, df_2022.dep_RSE, normalize='index')*100
crossed_5_2_perc = crossed_5_2_perc.reindex(["TPE", "PME", "ETI", "Grand groupe"])
crossed_5_2_perc = crossed_5_2_perc.drop(labels=0, axis=1)
crossed_5_2_perc
| dep_RSE | A la Direction Générale | Au pôle RH | Au pôle communication | Autres | Finance / Admin / CFO / Juridique | Innovation / R&D | La fonction RSE est autonome | Opérations | QSE / HSE / QHSE / Qualité | Secrétariat Général | Transverses |
|---|---|---|---|---|---|---|---|---|---|---|---|
| categ_taille_entreprises | |||||||||||
| TPE | 23.140496 | 0.826446 | 2.479339 | 0.000000 | 0.000000 | 0.826446 | 9.917355 | 0.000000 | 0.000000 | 0.000000 | 0.826446 |
| PME | 17.021277 | 7.712766 | 5.319149 | 5.585106 | 0.797872 | 0.531915 | 21.808511 | 0.797872 | 2.127660 | 0.000000 | 1.861702 |
| ETI | 25.833333 | 14.166667 | 7.916667 | 6.250000 | 1.666667 | 2.083333 | 16.666667 | 2.083333 | 5.416667 | 0.416667 | 2.500000 |
| Grand groupe | 35.185185 | 11.111111 | 11.111111 | 5.555556 | 1.851852 | 3.703704 | 16.666667 | 0.000000 | 0.000000 | 5.555556 | 3.703704 |
import matplotlib.pyplot as plt
# plot grouped bar chart
crossed_5_2_perc.plot.bar(rot=0)
plt.legend(bbox_to_anchor=(1.6, 1))
plt.title("Questions 5&2 : Département auquel la RSE est rattachée en fonction de la taille de l'entreprise")
# Export fichier
plt.savefig("crossed_5_2.svg", bbox_inches='tight')
files.download("crossed_5_2.svg")
plt.savefig("crossed_5_2.png", bbox_inches='tight')
files.download("crossed_5_2.png")
# Tableau croisé 6/2
crossed_6_2 = pd.crosstab(df_2022.categ_taille_entreprises, df_2022["La RSE est-elle directement représentée au sein du *COMEX* ?"])
crossed_6_2 = crossed_6_2.reindex(["TPE", "PME", "ETI", "Grand groupe"])
crossed_6_2 = crossed_6_2.drop("Non pertinent", axis=1)
crossed_6_2 = crossed_6_2.reindex(["Oui", "Non"], axis=1)
crossed_6_2
| La RSE est-elle directement représentée au sein du *COMEX* ? | Oui | Non |
|---|---|---|
| categ_taille_entreprises | ||
| TPE | 59 | 20 |
| PME | 187 | 137 |
| ETI | 138 | 76 |
| Grand groupe | 37 | 13 |
# Tableau croisé 6/2 en pourcentage
crossed_6_2_perc = crossed_6_2.div(crossed_6_2.sum(axis=1), axis=0)*100
crossed_6_2_perc = crossed_6_2_perc.reindex(["TPE", "PME", "ETI", "Grand groupe"])
crossed_6_2_perc = crossed_6_2_perc.reindex(["Oui", "Non"], axis=1)
crossed_6_2_perc
| La RSE est-elle directement représentée au sein du *COMEX* ? | Oui | Non |
|---|---|---|
| categ_taille_entreprises | ||
| TPE | 74.683544 | 25.316456 |
| PME | 57.716049 | 42.283951 |
| ETI | 64.485981 | 35.514019 |
| Grand groupe | 74.000000 | 26.000000 |
import matplotlib.pyplot as plt
# plot grouped bar chart
crossed_6_2_perc.plot.bar(rot=0)
plt.legend(bbox_to_anchor=(1.4, 1))
plt.title("Questions 6&2 : RSE rattachée ou non au COMEX en fonction de la taille de l'entreprise")
# Export fichier
plt.savefig("crossed_6_2.svg", bbox_inches='tight')
files.download("crossed_6_2.svg")
plt.savefig("crossed_6_2.png", bbox_inches='tight')
files.download("crossed_6_2.png")
# Tableau croisé 7/2
crossed_7_2 = pd.crosstab(df_2022.categ_taille_entreprises, df_2022['Quel est le *budget annuel* mis à disposition de votre département RSE ?'])
crossed_7_2 = crossed_7_2.reindex(["TPE", "PME", "ETI", "Grand groupe"])
crossed_7_2 = crossed_7_2.drop("Je ne souhaite pas partager ce chiffre", axis=1)
crossed_7_2 = crossed_7_2.reindex(["Aucun budget",'De 1 à 5 000€','De 5 000 à 20 000€', 'De 20 000 à 50 000€', 'De 50 000 à 100 000€', "Plus de 100 000€"], axis=1)
crossed_7_2
| Quel est le *budget annuel* mis à disposition de votre département RSE ? | Aucun budget | De 1 à 5 000€ | De 5 000 à 20 000€ | De 20 000 à 50 000€ | De 50 000 à 100 000€ | Plus de 100 000€ |
|---|---|---|---|---|---|---|
| categ_taille_entreprises | ||||||
| TPE | 47 | 45 | 8 | 2 | 0 | 2 |
| PME | 95 | 78 | 72 | 25 | 5 | 10 |
| ETI | 38 | 17 | 28 | 31 | 19 | 28 |
| Grand groupe | 4 | 0 | 1 | 3 | 4 | 16 |
# Tableau croisé 7/2 en pourcentage
crossed_7_2_perc = crossed_7_2.div(crossed_7_2.sum(axis=1), axis=0)*100
crossed_7_2_perc = crossed_7_2_perc.reindex(["TPE", "PME", "ETI", "Grand groupe"])
crossed_7_2_perc = crossed_7_2_perc.reindex(["Aucun budget",'De 1 à 5 000€','De 5 000 à 20 000€', 'De 20 000 à 50 000€', 'De 50 000 à 100 000€', "Plus de 100 000€"], axis=1)
crossed_7_2_perc
| Quel est le *budget annuel* mis à disposition de votre département RSE ? | Aucun budget | De 1 à 5 000€ | De 5 000 à 20 000€ | De 20 000 à 50 000€ | De 50 000 à 100 000€ | Plus de 100 000€ |
|---|---|---|---|---|---|---|
| categ_taille_entreprises | ||||||
| TPE | 45.192308 | 43.269231 | 7.692308 | 1.923077 | 0.000000 | 1.923077 |
| PME | 33.333333 | 27.368421 | 25.263158 | 8.771930 | 1.754386 | 3.508772 |
| ETI | 23.602484 | 10.559006 | 17.391304 | 19.254658 | 11.801242 | 17.391304 |
| Grand groupe | 14.285714 | 0.000000 | 3.571429 | 10.714286 | 14.285714 | 57.142857 |
import matplotlib.pyplot as plt
# plot grouped bar chart
crossed_7_2_perc.plot.bar(rot=0)
plt.legend(bbox_to_anchor=(1.7, 1))
plt.title("Questions 7&2 : Budget annuel en fonction de la taille de l'entreprise")
# Export fichier
plt.savefig("crossed_7_2.svg", bbox_inches='tight')
files.download("crossed_7_2.svg")
plt.savefig("crossed_7_2.png", bbox_inches='tight')
files.download("crossed_7_2.png")
# Tableau croisé 7/4
crossed_7_4 = pd.crosstab(df_2022.equipe_RSE, df_2022["Quel est le *budget annuel* mis à disposition de votre département RSE ?"])
crossed_7_4 = crossed_7_4.drop("Je ne souhaite pas partager ce chiffre", axis=1)
crossed_7_4 = crossed_7_4.reindex(["Aucun budget",'De 1 à 5 000€','De 5 000 à 20 000€', 'De 20 000 à 50 000€', 'De 50 000 à 100 000€', "Plus de 100 000€"], axis=1)
crossed_7_4
| Quel est le *budget annuel* mis à disposition de votre département RSE ? | Aucun budget | De 1 à 5 000€ | De 5 000 à 20 000€ | De 20 000 à 50 000€ | De 50 000 à 100 000€ | Plus de 100 000€ |
|---|---|---|---|---|---|---|
| equipe_RSE | ||||||
| 1-2 | 69 | 61 | 65 | 37 | 17 | 14 |
| 3-5 | 13 | 13 | 12 | 14 | 8 | 19 |
| 6-10 | 4 | 7 | 6 | 0 | 0 | 11 |
| >10 | 0 | 0 | 5 | 3 | 0 | 7 |
| Il n'y a pas d'équipe dédiée | 98 | 58 | 21 | 7 | 3 | 5 |
# Tableau croisé 7/4 en pourcentage
crossed_7_4_perc = crossed_7_4.div(crossed_7_4.sum(axis=1), axis=0)*100
crossed_7_4_perc = crossed_7_4_perc.reindex(["Aucun budget",'De 1 à 5 000€','De 5 000 à 20 000€', 'De 20 000 à 50 000€', 'De 50 000 à 100 000€', "Plus de 100 000€"], axis=1)
crossed_7_4_perc
| Quel est le *budget annuel* mis à disposition de votre département RSE ? | Aucun budget | De 1 à 5 000€ | De 5 000 à 20 000€ | De 20 000 à 50 000€ | De 50 000 à 100 000€ | Plus de 100 000€ |
|---|---|---|---|---|---|---|
| equipe_RSE | ||||||
| 1-2 | 26.235741 | 23.193916 | 24.714829 | 14.068441 | 6.463878 | 5.323194 |
| 3-5 | 16.455696 | 16.455696 | 15.189873 | 17.721519 | 10.126582 | 24.050633 |
| 6-10 | 14.285714 | 25.000000 | 21.428571 | 0.000000 | 0.000000 | 39.285714 |
| >10 | 0.000000 | 0.000000 | 33.333333 | 20.000000 | 0.000000 | 46.666667 |
| Il n'y a pas d'équipe dédiée | 51.041667 | 30.208333 | 10.937500 | 3.645833 | 1.562500 | 2.604167 |
import matplotlib.pyplot as plt
# plot grouped bar chart
crossed_7_4_perc.plot.bar(rot=5)
plt.legend(bbox_to_anchor=(1.7, 1))
plt.title("Questions 7&4 : Budget annuel en fonction de la taille de l'équipe RSE")
# Export fichier
plt.savefig("crossed_7_4.svg", bbox_inches='tight')
files.download("crossed_7_4.svg")
plt.savefig("crossed_7_4.png", bbox_inches='tight')
files.download("crossed_7_4.png")
crossed_8_2 = df_2022[['categ_taille_entreprises','question_8_COMEX', 'question_8_salaries', 'question_8_middle_management', 'question_8_achats', 'question_8_RH', 'question_8_com_market', 'question_8_commercial', 'question_8_prod', 'question_8_finance_admin']]
crossed_8_2.head()
| categ_taille_entreprises | question_8_COMEX | question_8_salaries | question_8_middle_management | question_8_achats | question_8_RH | question_8_com_market | question_8_commercial | question_8_prod | question_8_finance_admin | |
|---|---|---|---|---|---|---|---|---|---|---|
| 102 | PME | Non pertinent | Favorable | Indifférent | Réfractaire | Favorable | Favorable | Favorable | Non pertinent | Indifférent |
| 93 | PME | Favorable | Favorable | Favorable | Non pertinent | Non pertinent | Moteur | Moteur | Favorable | Non pertinent |
| 88 | ETI | Favorable | Favorable | Indifférent | Indifférent | Moteur | Favorable | Favorable | Indifférent | Indifférent |
| 78 | TPE | Non pertinent | Non pertinent | Non pertinent | Non pertinent | Non pertinent | Non pertinent | Non pertinent | Non pertinent | Non pertinent |
| 84 | TPE | Favorable | Non pertinent | Non pertinent | Non pertinent | Non pertinent | Non pertinent | Non pertinent | Non pertinent | Non pertinent |
# Pour les TPE
crossed_8_2_tpe = crossed_8_2.loc[crossed_8_2['categ_taille_entreprises'] == 'TPE']
crossed_8_2_tpe = crossed_8_2_tpe[['question_8_COMEX', 'question_8_salaries', 'question_8_middle_management', 'question_8_achats', 'question_8_RH', 'question_8_com_market', 'question_8_commercial', 'question_8_prod', 'question_8_finance_admin']]
crossed_8_2_tpe.head()
# Pivot de la table
crossed_8_2_tpe = crossed_8_2_tpe.apply(pd.Series.value_counts).fillna(0).astype(int)
crossed_8_2_tpe = crossed_8_2_tpe.reset_index()
crossed_8_2_tpe.rename(columns={'index':'Réponse'}, inplace=True)
crossed_8_2_tpe = crossed_8_2_tpe.pivot_table(columns='Réponse')
crossed_8_2_tpe = crossed_8_2_tpe.drop("Non pertinent", axis=1)
crossed_8_2_tpe = crossed_8_2_tpe.reindex(['Moteur', "Favorable", "Indifférent", "Réfractaire"], axis=1)
# En pourcentage
crossed_8_2_tpe_perc = crossed_8_2_tpe.div(crossed_8_2_tpe.sum(axis=1), axis=0)*100
display(crossed_8_2_tpe_perc)
# plot bar chart
crossed_8_2_tpe_perc.plot(kind='bar', stacked=True)
plt.legend(bbox_to_anchor=(1.4, 1))
plt.title("Position des parties prenantes internes vis à vis de la RSE dans les TPE")
# Export fichier
plt.savefig("crossed_8_2_tpe_perc.svg", bbox_inches='tight')
files.download("crossed_8_2_tpe_perc.svg")
plt.savefig("crossed_8_2_tpe_perc.png", bbox_inches='tight')
files.download("crossed_8_2_tpe_perc.png")
| Réponse | Moteur | Favorable | Indifférent | Réfractaire |
|---|---|---|---|---|
| question_8_COMEX | 79.746835 | 16.455696 | 3.797468 | 0.000000 |
| question_8_RH | 58.064516 | 37.096774 | 4.838710 | 0.000000 |
| question_8_achats | 48.148148 | 37.037037 | 12.962963 | 1.851852 |
| question_8_com_market | 66.666667 | 26.923077 | 6.410256 | 0.000000 |
| question_8_commercial | 61.111111 | 27.777778 | 8.333333 | 2.777778 |
| question_8_finance_admin | 44.927536 | 40.579710 | 13.043478 | 1.449275 |
| question_8_middle_management | 56.000000 | 32.000000 | 12.000000 | 0.000000 |
| question_8_prod | 43.103448 | 41.379310 | 13.793103 | 1.724138 |
| question_8_salaries | 53.763441 | 38.709677 | 7.526882 | 0.000000 |
# Pour les PME
crossed_8_2_pme = crossed_8_2.loc[crossed_8_2['categ_taille_entreprises'] == 'PME']
crossed_8_2_pme = crossed_8_2_pme[['question_8_COMEX', 'question_8_salaries', 'question_8_middle_management', 'question_8_achats', 'question_8_RH', 'question_8_com_market', 'question_8_commercial', 'question_8_prod', 'question_8_finance_admin']]
# Pivot de la table
crossed_8_2_pme = crossed_8_2_pme.apply(pd.Series.value_counts).fillna(0).astype(int)
crossed_8_2_pme = crossed_8_2_pme.reset_index()
crossed_8_2_pme.rename(columns={'index':'Réponse'}, inplace=True)
crossed_8_2_pme = crossed_8_2_pme.pivot_table(columns='Réponse')
crossed_8_2_pme = crossed_8_2_pme.drop("Non pertinent", axis=1)
crossed_8_2_pme = crossed_8_2_pme.reindex(['Moteur', "Favorable", "Indifférent", "Réfractaire"], axis=1)
display(crossed_8_2_pme.head())
# En pourcentage
crossed_8_2_pme_perc = crossed_8_2_pme.div(crossed_8_2_pme.sum(axis=1), axis=0)*100
display(crossed_8_2_pme_perc)
# plot bar chart
crossed_8_2_pme_perc.plot(kind='bar', stacked=True)
plt.legend(bbox_to_anchor=(1.4, 1))
plt.title("Position des parties prenantes internes vis à vis de la RSE dans les PME")
# Export fichier
plt.savefig("crossed_8_2_pme_perc.svg", bbox_inches='tight')
files.download("crossed_8_2_pme_perc.svg")
plt.savefig("crossed_8_2_pme_perc.png", bbox_inches='tight')
files.download("crossed_8_2_pme_perc.png")
| Réponse | Moteur | Favorable | Indifférent | Réfractaire |
|---|---|---|---|---|
| question_8_COMEX | 146 | 146 | 34 | 8 |
| question_8_RH | 149 | 136 | 32 | 5 |
| question_8_achats | 62 | 136 | 61 | 8 |
| question_8_com_market | 185 | 129 | 32 | 0 |
| question_8_commercial | 54 | 173 | 81 | 7 |
| Réponse | Moteur | Favorable | Indifférent | Réfractaire |
|---|---|---|---|---|
| question_8_COMEX | 43.712575 | 43.712575 | 10.179641 | 2.395210 |
| question_8_RH | 46.273292 | 42.236025 | 9.937888 | 1.552795 |
| question_8_achats | 23.220974 | 50.936330 | 22.846442 | 2.996255 |
| question_8_com_market | 53.468208 | 37.283237 | 9.248555 | 0.000000 |
| question_8_commercial | 17.142857 | 54.920635 | 25.714286 | 2.222222 |
| question_8_finance_admin | 18.787879 | 47.878788 | 30.000000 | 3.333333 |
| question_8_middle_management | 22.713864 | 59.587021 | 17.404130 | 0.294985 |
| question_8_prod | 13.857678 | 53.932584 | 29.588015 | 2.621723 |
| question_8_salaries | 24.193548 | 59.408602 | 16.129032 | 0.268817 |
# Pour les ETI
crossed_8_2_eti = crossed_8_2.loc[crossed_8_2['categ_taille_entreprises'] == 'ETI']
crossed_8_2_eti = crossed_8_2_eti[['question_8_COMEX', 'question_8_salaries', 'question_8_middle_management', 'question_8_achats', 'question_8_RH', 'question_8_com_market', 'question_8_commercial', 'question_8_prod', 'question_8_finance_admin']]
crossed_8_2_eti.head()
# Pivot de la table
crossed_8_2_eti = crossed_8_2_eti.apply(pd.Series.value_counts).fillna(0).astype(int)
crossed_8_2_eti = crossed_8_2_eti.reset_index()
crossed_8_2_eti.rename(columns={'index':'Réponse'}, inplace=True)
crossed_8_2_eti = crossed_8_2_eti.pivot_table(columns='Réponse')
crossed_8_2_eti = crossed_8_2_eti.drop("Non pertinent", axis=1)
crossed_8_2_eti = crossed_8_2_eti.reindex(['Moteur', "Favorable", "Indifférent", "Réfractaire"], axis=1)
display(crossed_8_2_pme.head())
# En pourcentage
crossed_8_2_eti_perc = crossed_8_2_eti.div(crossed_8_2_eti.sum(axis=1), axis=0)*100
display(crossed_8_2_eti_perc)
# plot bar chart
crossed_8_2_eti_perc.plot(kind='bar', stacked=True)
plt.legend(bbox_to_anchor=(1.4, 1))
plt.title("Position des parties prenantes internes vis à vis de la RSE dans les ETI")
# Export fichier
plt.savefig("crossed_8_2_eti_perc.svg", bbox_inches='tight')
files.download("crossed_8_2_eti_perc.svg")
plt.savefig("crossed_8_2_eti_perc.png", bbox_inches='tight')
files.download("crossed_8_2_eti_perc.png")
| Réponse | Moteur | Favorable | Indifférent | Réfractaire |
|---|---|---|---|---|
| question_8_COMEX | 146 | 146 | 34 | 8 |
| question_8_RH | 149 | 136 | 32 | 5 |
| question_8_achats | 62 | 136 | 61 | 8 |
| question_8_com_market | 185 | 129 | 32 | 0 |
| question_8_commercial | 54 | 173 | 81 | 7 |
| Réponse | Moteur | Favorable | Indifférent | Réfractaire |
|---|---|---|---|---|
| question_8_COMEX | 40.000000 | 46.086957 | 13.478261 | 0.434783 |
| question_8_RH | 41.772152 | 44.303797 | 13.080169 | 0.843882 |
| question_8_achats | 29.223744 | 44.292237 | 22.831050 | 3.652968 |
| question_8_com_market | 42.735043 | 47.435897 | 9.401709 | 0.427350 |
| question_8_commercial | 12.616822 | 50.934579 | 33.177570 | 3.271028 |
| question_8_finance_admin | 9.956710 | 50.649351 | 37.229437 | 2.164502 |
| question_8_middle_management | 10.775862 | 58.189655 | 29.310345 | 1.724138 |
| question_8_prod | 10.447761 | 43.781095 | 41.293532 | 4.477612 |
| question_8_salaries | 25.630252 | 60.084034 | 13.865546 | 0.420168 |
# Pour les grands groupes
crossed_8_2_gg = crossed_8_2.loc[crossed_8_2['categ_taille_entreprises'] == 'Grand groupe']
crossed_8_2_gg = crossed_8_2_gg[['question_8_COMEX', 'question_8_salaries', 'question_8_middle_management', 'question_8_achats', 'question_8_RH', 'question_8_com_market', 'question_8_commercial', 'question_8_prod', 'question_8_finance_admin']]
crossed_8_2_gg.head()
# Pivot de la table
crossed_8_2_gg = crossed_8_2_gg.apply(pd.Series.value_counts).fillna(0).astype(int)
crossed_8_2_gg = crossed_8_2_gg.reset_index()
crossed_8_2_gg.rename(columns={'index':'Réponse'}, inplace=True)
crossed_8_2_gg = crossed_8_2_gg.pivot_table(columns='Réponse')
crossed_8_2_gg = crossed_8_2_gg.drop("Non pertinent", axis=1)
crossed_8_2_gg = crossed_8_2_gg.reindex(['Moteur', "Favorable", "Indifférent", "Réfractaire"], axis=1)
display(crossed_8_2_gg.head())
# En pourcentage
crossed_8_2_gg_perc = crossed_8_2_gg.div(crossed_8_2_gg.sum(axis=1), axis=0)*100
display(crossed_8_2_gg_perc)
# plot bar chart
crossed_8_2_gg_perc.plot(kind='bar', stacked=True)
plt.legend(bbox_to_anchor=(1.4, 1))
plt.title("Position des parties prenantes internes vis à vis de la RSE dans les grands groupes")
# Export fichier
plt.savefig("crossed_8_2_gg_perc.svg", bbox_inches='tight')
files.download("crossed_8_2_gg_perc.svg")
plt.savefig("crossed_8_2_gg_perc.png", bbox_inches='tight')
files.download("crossed_8_2_gg_perc.png")
| Réponse | Moteur | Favorable | Indifférent | Réfractaire |
|---|---|---|---|---|
| question_8_COMEX | 23 | 27 | 3 | 0 |
| question_8_RH | 24 | 27 | 3 | 0 |
| question_8_achats | 19 | 25 | 8 | 0 |
| question_8_com_market | 25 | 21 | 7 | 1 |
| question_8_commercial | 7 | 26 | 14 | 1 |
| Réponse | Moteur | Favorable | Indifférent | Réfractaire |
|---|---|---|---|---|
| question_8_COMEX | 43.396226 | 50.943396 | 5.660377 | 0.000000 |
| question_8_RH | 44.444444 | 50.000000 | 5.555556 | 0.000000 |
| question_8_achats | 36.538462 | 48.076923 | 15.384615 | 0.000000 |
| question_8_com_market | 46.296296 | 38.888889 | 12.962963 | 1.851852 |
| question_8_commercial | 14.583333 | 54.166667 | 29.166667 | 2.083333 |
| question_8_finance_admin | 22.000000 | 50.000000 | 26.000000 | 2.000000 |
| question_8_middle_management | 19.607843 | 50.980392 | 29.411765 | 0.000000 |
| question_8_prod | 16.666667 | 47.619048 | 35.714286 | 0.000000 |
| question_8_salaries | 32.692308 | 55.769231 | 11.538462 | 0.000000 |
crossed_9_2 = pd.crosstab(df_2022.categ_taille_entreprises, df_2022["Aujourd'hui, selon vous, quelle proportion de salariés est *impliquée dans votre démarche RSE *?"])
crossed_9_2 = crossed_9_2.drop("Non pertinent chez nous", axis=1)
crossed_9_2 = crossed_9_2.reindex(["TPE", "PME", "ETI", "Grand groupe"])
crossed_9_2 = crossed_9_2.reindex(["Très peu de salariés - Moins de 5%",
'Une petite partie - Entre 5 et 25% des salariés',
'Près de la moitié - Entre 25 et 50%',
'Plus de la moitié - Entre 50 et 75%',
"Presque tous les salariés - Plus de 75%"], axis=1)
crossed_9_2
| Aujourd'hui, selon vous, quelle proportion de salariés est *impliquée dans votre démarche RSE *? | Très peu de salariés - Moins de 5% | Une petite partie - Entre 5 et 25% des salariés | Près de la moitié - Entre 25 et 50% | Plus de la moitié - Entre 50 et 75% | Presque tous les salariés - Plus de 75% |
|---|---|---|---|---|---|
| categ_taille_entreprises | |||||
| TPE | 12 | 7 | 12 | 10 | 52 |
| PME | 75 | 131 | 53 | 44 | 55 |
| ETI | 67 | 107 | 29 | 17 | 11 |
| Grand groupe | 10 | 26 | 6 | 6 | 2 |
# Tableau croisé 9/2 en pourcentage
crossed_9_2_perc = crossed_9_2.div(crossed_9_2.sum(axis=1), axis=0)*100
crossed_9_2_perc = crossed_9_2_perc.reindex(["TPE", "PME", "ETI", "Grand groupe"])
crossed_9_2_perc = crossed_9_2_perc.reindex(["Très peu de salariés - Moins de 5%",
'Une petite partie - Entre 5 et 25% des salariés',
'Près de la moitié - Entre 25 et 50%',
'Plus de la moitié - Entre 50 et 75%',
"Presque tous les salariés - Plus de 75%"], axis=1)
crossed_9_2_perc
| Aujourd'hui, selon vous, quelle proportion de salariés est *impliquée dans votre démarche RSE *? | Très peu de salariés - Moins de 5% | Une petite partie - Entre 5 et 25% des salariés | Près de la moitié - Entre 25 et 50% | Plus de la moitié - Entre 50 et 75% | Presque tous les salariés - Plus de 75% |
|---|---|---|---|---|---|
| categ_taille_entreprises | |||||
| TPE | 12.903226 | 7.526882 | 12.903226 | 10.752688 | 55.913978 |
| PME | 20.949721 | 36.592179 | 14.804469 | 12.290503 | 15.363128 |
| ETI | 29.004329 | 46.320346 | 12.554113 | 7.359307 | 4.761905 |
| Grand groupe | 20.000000 | 52.000000 | 12.000000 | 12.000000 | 4.000000 |
import matplotlib.pyplot as plt
# plot grouped bar chart
crossed_9_2_perc.plot.bar(rot=0)
plt.legend(bbox_to_anchor=(2, 1))
plt.title("Questions 9&2 : Proportion de salarié·e·s impliqué·e·s en fonction de la taille de l'entreprise")
# Export fichier
plt.savefig("crossed_9_2_perc.svg", bbox_inches='tight')
files.download("crossed_9_2_perc.svg")
plt.savefig("crossed_9_2_perc.png", bbox_inches='tight')
files.download("crossed_9_2_perc.png")
crossed_10_2 = df_2022[['categ_taille_entreprises','question_10_etat_co_publiques', 'question_10_conso_clients', 'question_10_ss_traitants', 'question_10_candidats', 'question_10_citoyens', 'question_10_actionnaires']]
crossed_10_2.head()
| categ_taille_entreprises | question_10_etat_co_publiques | question_10_conso_clients | question_10_ss_traitants | question_10_candidats | question_10_citoyens | question_10_actionnaires | |
|---|---|---|---|---|---|---|---|
| 102 | PME | Ils ne connaissent pas nos actions | Ils ne connaissent pas nos actions | Ils ne connaissent pas nos actions | Ils connaissent nos actions | Ils ne connaissent pas nos actions | Ils connaissent nos actions |
| 93 | PME | Ils ne connaissent pas nos actions | Ils connaissent nos actions | Ils participent à nos actions RSE | Ils connaissent nos actions | Ils connaissent nos actions | Ils participent à nos actions RSE |
| 88 | ETI | Ils connaissent nos actions | Ils connaissent nos actions | Ils connaissent nos actions | Ils connaissent nos actions | Ils ne connaissent pas nos actions | Ils connaissent nos actions |
| 78 | TPE | Non pertinent | Ils participent à nos actions RSE | Ils participent à nos actions RSE | Non pertinent | Non pertinent | Non pertinent |
| 84 | TPE | Ils ne connaissent pas nos actions | Ils ne connaissent pas nos actions | Ils ne connaissent pas nos actions | Ils ne connaissent pas nos actions | Ils ne connaissent pas nos actions | Non pertinent |
# Pour les TPE
crossed_10_2_tpe = crossed_10_2.loc[crossed_10_2['categ_taille_entreprises'] == 'TPE']
crossed_10_2_tpe = crossed_10_2_tpe[['question_10_etat_co_publiques', 'question_10_conso_clients', 'question_10_ss_traitants', 'question_10_candidats', 'question_10_citoyens', 'question_10_actionnaires']]
# Pivot de la table
crossed_10_2_tpe = crossed_10_2_tpe.apply(pd.Series.value_counts).fillna(0).astype(int)
crossed_10_2_tpe = crossed_10_2_tpe.reset_index()
crossed_10_2_tpe.rename(columns={'index':'Réponse'}, inplace=True)
crossed_10_2_tpe = crossed_10_2_tpe.pivot_table(columns='Réponse')
crossed_10_2_tpe = crossed_10_2_tpe.drop("Non pertinent", axis=1)
crossed_10_2_tpe = crossed_10_2_tpe.reindex(["Ils connaissent nos actions", "Ils participent à nos actions RSE", "Ils ne connaissent pas nos actions"], axis=1)
display(crossed_10_2_tpe.head())
# En pourcentage
crossed_10_2_tpe_perc = crossed_10_2_tpe.div(crossed_10_2_tpe.sum(axis=1), axis=0)*100
display(crossed_10_2_tpe_perc)
# plot bar chart
crossed_10_2_tpe_perc.plot(kind='bar', stacked=True)
plt.legend(bbox_to_anchor=(1.4, 1))
plt.title("Position des parties prenantes externes vis à vis de la RSE dans les TPE")
# Export fichier
plt.savefig("crossed_10_2_tpe_perc.svg", bbox_inches='tight')
files.download("crossed_10_2_tpe_perc.svg")
plt.savefig("crossed_10_2_tpe_perc.png", bbox_inches='tight')
files.download("crossed_10_2_tpe_perc.png")
| Réponse | Ils connaissent nos actions | Ils participent à nos actions RSE | Ils ne connaissent pas nos actions |
|---|---|---|---|
| question_10_actionnaires | 20 | 33 | 6 |
| question_10_candidats | 52 | 22 | 16 |
| question_10_citoyens | 32 | 13 | 37 |
| question_10_conso_clients | 56 | 42 | 18 |
| question_10_etat_co_publiques | 28 | 22 | 35 |
| Réponse | Ils connaissent nos actions | Ils participent à nos actions RSE | Ils ne connaissent pas nos actions |
|---|---|---|---|
| question_10_actionnaires | 33.898305 | 55.932203 | 10.169492 |
| question_10_candidats | 57.777778 | 24.444444 | 17.777778 |
| question_10_citoyens | 39.024390 | 15.853659 | 45.121951 |
| question_10_conso_clients | 48.275862 | 36.206897 | 15.517241 |
| question_10_etat_co_publiques | 32.941176 | 25.882353 | 41.176471 |
| question_10_ss_traitants | 42.553191 | 34.042553 | 23.404255 |
# Pour les PME
crossed_10_2_pme = crossed_10_2.loc[crossed_10_2['categ_taille_entreprises'] == 'PME']
crossed_10_2_pme = crossed_10_2_pme[['question_10_etat_co_publiques', 'question_10_conso_clients', 'question_10_ss_traitants', 'question_10_candidats', 'question_10_citoyens', 'question_10_actionnaires']]
# Pivot de la table
crossed_10_2_pme = crossed_10_2_pme.apply(pd.Series.value_counts).fillna(0).astype(int)
crossed_10_2_pme = crossed_10_2_pme.reset_index()
crossed_10_2_pme.rename(columns={'index':'Réponse'}, inplace=True)
crossed_10_2_pme = crossed_10_2_pme.pivot_table(columns='Réponse')
crossed_10_2_pme = crossed_10_2_pme.drop("Non pertinent", axis=1)
crossed_10_2_pme = crossed_10_2_pme.reindex(["Ils connaissent nos actions", "Ils participent à nos actions RSE", "Ils ne connaissent pas nos actions"], axis=1)
display(crossed_10_2_pme.head())
# En pourcentage
crossed_10_2_pme_perc = crossed_10_2_pme.div(crossed_10_2_pme.sum(axis=1), axis=0)*100
display(crossed_10_2_pme_perc)
# plot bar chart
crossed_10_2_pme_perc.plot(kind='bar', stacked=True)
plt.legend(bbox_to_anchor=(1.4, 1))
plt.title("Position des parties prenantes externes vis à vis de la RSE dans les PME")
# Export fichier
plt.savefig("crossed_10_2_pme_perc.svg", bbox_inches='tight')
files.download("crossed_10_2_pme_perc.svg")
plt.savefig("crossed_10_2_pme_perc.png", bbox_inches='tight')
files.download("crossed_10_2_pme_perc.png")
| Réponse | Ils connaissent nos actions | Ils participent à nos actions RSE | Ils ne connaissent pas nos actions |
|---|---|---|---|
| question_10_actionnaires | 137 | 80 | 59 |
| question_10_candidats | 207 | 27 | 115 |
| question_10_citoyens | 66 | 7 | 196 |
| question_10_conso_clients | 194 | 55 | 106 |
| question_10_etat_co_publiques | 99 | 31 | 160 |
| Réponse | Ils connaissent nos actions | Ils participent à nos actions RSE | Ils ne connaissent pas nos actions |
|---|---|---|---|
| question_10_actionnaires | 49.637681 | 28.985507 | 21.376812 |
| question_10_candidats | 59.312321 | 7.736390 | 32.951289 |
| question_10_citoyens | 24.535316 | 2.602230 | 72.862454 |
| question_10_conso_clients | 54.647887 | 15.492958 | 29.859155 |
| question_10_etat_co_publiques | 34.137931 | 10.689655 | 55.172414 |
| question_10_ss_traitants | 35.294118 | 14.241486 | 50.464396 |
# Pour les ETI
crossed_10_2_eti = crossed_10_2.loc[crossed_10_2['categ_taille_entreprises'] == 'ETI']
crossed_10_2_eti = crossed_10_2_eti[['question_10_etat_co_publiques', 'question_10_conso_clients', 'question_10_ss_traitants', 'question_10_candidats', 'question_10_citoyens', 'question_10_actionnaires']]
# Pivot de la table
crossed_10_2_eti = crossed_10_2_eti.apply(pd.Series.value_counts).fillna(0).astype(int)
crossed_10_2_eti = crossed_10_2_eti.reset_index()
crossed_10_2_eti.rename(columns={'index':'Réponse'}, inplace=True)
crossed_10_2_eti = crossed_10_2_eti.pivot_table(columns='Réponse')
crossed_10_2_eti = crossed_10_2_eti.drop("Non pertinent", axis=1)
crossed_10_2_eti = crossed_10_2_eti.reindex(["Ils connaissent nos actions", "Ils participent à nos actions RSE", "Ils ne connaissent pas nos actions"], axis=1)
display(crossed_10_2_eti.head())
# En pourcentage
crossed_10_2_eti_perc = crossed_10_2_eti.div(crossed_10_2_eti.sum(axis=1), axis=0)*100
display(crossed_10_2_eti_perc)
# plot bar chart
crossed_10_2_eti_perc.plot(kind='bar', stacked=True)
plt.legend(bbox_to_anchor=(1.4, 1))
plt.title("Position des parties prenantes externes vis à vis de la RSE dans les ETI")
# Export fichier
plt.savefig("crossed_10_2_eti_perc.svg", bbox_inches='tight')
files.download("crossed_10_2_eti_perc.svg")
plt.savefig("crossed_10_2_eti_perc.png", bbox_inches='tight')
files.download("crossed_10_2_eti_perc.png")
| Réponse | Ils connaissent nos actions | Ils participent à nos actions RSE | Ils ne connaissent pas nos actions |
|---|---|---|---|
| question_10_actionnaires | 109 | 61 | 24 |
| question_10_candidats | 146 | 10 | 75 |
| question_10_citoyens | 52 | 13 | 140 |
| question_10_conso_clients | 132 | 32 | 65 |
| question_10_etat_co_publiques | 92 | 18 | 105 |
| Réponse | Ils connaissent nos actions | Ils participent à nos actions RSE | Ils ne connaissent pas nos actions |
|---|---|---|---|
| question_10_actionnaires | 56.185567 | 31.443299 | 12.371134 |
| question_10_candidats | 63.203463 | 4.329004 | 32.467532 |
| question_10_citoyens | 25.365854 | 6.341463 | 68.292683 |
| question_10_conso_clients | 57.641921 | 13.973799 | 28.384279 |
| question_10_etat_co_publiques | 42.790698 | 8.372093 | 48.837209 |
| question_10_ss_traitants | 38.116592 | 18.834081 | 43.049327 |
# Pour les grands groupes
crossed_10_2_gg = crossed_10_2.loc[crossed_10_2['categ_taille_entreprises'] == 'Grand groupe']
crossed_10_2_gg = crossed_10_2_gg[['question_10_etat_co_publiques', 'question_10_conso_clients', 'question_10_ss_traitants', 'question_10_candidats', 'question_10_citoyens', 'question_10_actionnaires']]
# Pivot de la table
crossed_10_2_gg = crossed_10_2_gg.apply(pd.Series.value_counts).fillna(0).astype(int)
crossed_10_2_gg = crossed_10_2_gg.reset_index()
crossed_10_2_gg.rename(columns={'index':'Réponse'}, inplace=True)
crossed_10_2_gg = crossed_10_2_gg.pivot_table(columns='Réponse')
crossed_10_2_gg = crossed_10_2_gg.drop("Non pertinent", axis=1)
crossed_10_2_gg = crossed_10_2_gg.reindex(["Ils connaissent nos actions", "Ils participent à nos actions RSE", "Ils ne connaissent pas nos actions"], axis=1)
display(crossed_10_2_gg.head())
# En pourcentage
crossed_10_2_gg_perc = crossed_10_2_gg.div(crossed_10_2_gg.sum(axis=1), axis=0)*100
display(crossed_10_2_gg_perc)
# plot bar chart
crossed_10_2_gg_perc.plot(kind='bar', stacked=True)
plt.legend(bbox_to_anchor=(1.4, 1))
plt.title("Position des parties prenantes externes vis à vis de la RSE dans les Grands Groupes")
# Export fichier
plt.savefig("crossed_10_2_gg_perc.svg", bbox_inches='tight')
files.download("crossed_10_2_gg_perc.svg")
plt.savefig("crossed_10_2_gg_perc.png", bbox_inches='tight')
files.download("crossed_10_2_gg_perc.png")
| Réponse | Ils connaissent nos actions | Ils participent à nos actions RSE | Ils ne connaissent pas nos actions |
|---|---|---|---|
| question_10_actionnaires | 33 | 15 | 0 |
| question_10_candidats | 39 | 4 | 8 |
| question_10_citoyens | 19 | 2 | 23 |
| question_10_conso_clients | 28 | 18 | 6 |
| question_10_etat_co_publiques | 29 | 13 | 9 |
| Réponse | Ils connaissent nos actions | Ils participent à nos actions RSE | Ils ne connaissent pas nos actions |
|---|---|---|---|
| question_10_actionnaires | 68.750000 | 31.250000 | 0.000000 |
| question_10_candidats | 76.470588 | 7.843137 | 15.686275 |
| question_10_citoyens | 43.181818 | 4.545455 | 52.272727 |
| question_10_conso_clients | 53.846154 | 34.615385 | 11.538462 |
| question_10_etat_co_publiques | 56.862745 | 25.490196 | 17.647059 |
| question_10_ss_traitants | 35.849057 | 45.283019 | 18.867925 |
# Tableau croisé 11/2
crossed_11_2 = pd.crosstab(df_2022.categ_taille_entreprises, df_2022["Est-ce que l'activité commerciale principale de votre entreprise répond à un *enjeu social ou environnemental* ?"])
crossed_11_2 = crossed_11_2.reindex(["TPE", "PME", "ETI", "Grand groupe"])
crossed_11_2 = crossed_11_2.reindex(["Oui", "Non"], axis=1)
crossed_11_2
| Est-ce que l'activité commerciale principale de votre entreprise répond à un *enjeu social ou environnemental* ? | Oui | Non |
|---|---|---|
| categ_taille_entreprises | ||
| TPE | 87 | 24 |
| PME | 182 | 160 |
| ETI | 131 | 96 |
| Grand groupe | 34 | 18 |
# Tableau croisé 11/2 en pourcentage
crossed_11_2_perc = pd.crosstab(df_2022.categ_taille_entreprises, df_2022["Est-ce que l'activité commerciale principale de votre entreprise répond à un *enjeu social ou environnemental* ?"], normalize='index')*100
crossed_11_2_perc = crossed_11_2_perc.reindex(["TPE", "PME", "ETI", "Grand groupe"])
crossed_11_2_perc = crossed_11_2_perc.reindex(["Oui", "Non"], axis=1)
crossed_11_2_perc
| Est-ce que l'activité commerciale principale de votre entreprise répond à un *enjeu social ou environnemental* ? | Oui | Non |
|---|---|---|
| categ_taille_entreprises | ||
| TPE | 78.378378 | 21.621622 |
| PME | 53.216374 | 46.783626 |
| ETI | 57.709251 | 42.290749 |
| Grand groupe | 65.384615 | 34.615385 |
import matplotlib.pyplot as plt
# plot grouped bar chart
crossed_11_2_perc.plot.bar(rot=0)
plt.legend(bbox_to_anchor=(1.7, 1))
plt.title("Proportion d'entreprises répondantes dont l'activité commerciale principale comprend un enjeu social ou environnementale en fonction de leur taille")
# Export fichier
plt.savefig("crossed_11_2_perc.svg", bbox_inches='tight')
files.download("crossed_11_2_perc.svg")
plt.savefig("crossed_11_2_perc.png", bbox_inches='tight')
files.download("crossed_11_2_perc.png")
# Tableau croisé 11/7
crossed_11_7 = pd.crosstab(df_2022['Quel est le *budget annuel* mis à disposition de votre département RSE ?'], df_2022["Est-ce que l'activité commerciale principale de votre entreprise répond à un *enjeu social ou environnemental* ?"])
crossed_11_7 = crossed_11_7.drop("Je ne souhaite pas partager ce chiffre", axis=0)
crossed_11_7 = crossed_11_7.reindex(["Aucun budget",'De 1 à 5 000€','De 5 000 à 20 000€', 'De 20 000 à 50 000€', 'De 50 000 à 100 000€', "Plus de 100 000€"], axis=0)
crossed_11_7 = crossed_11_7.reindex(["Oui", "Non"], axis=1)
crossed_11_7
| Est-ce que l'activité commerciale principale de votre entreprise répond à un *enjeu social ou environnemental* ? | Oui | Non |
|---|---|---|
| Quel est le *budget annuel* mis à disposition de votre département RSE ? | ||
| Aucun budget | 107 | 65 |
| De 1 à 5 000€ | 74 | 56 |
| De 5 000 à 20 000€ | 58 | 46 |
| De 20 000 à 50 000€ | 37 | 24 |
| De 50 000 à 100 000€ | 18 | 8 |
| Plus de 100 000€ | 33 | 21 |
# Tableau croisé 11/7 en pourcentage
crossed_11_7_perc = crossed_11_7.div(crossed_11_7.sum(axis=1), axis=0)*100
crossed_11_7_perc = crossed_11_7_perc.reindex(["Aucun budget",'De 1 à 5 000€','De 5 000 à 20 000€', 'De 20 000 à 50 000€', 'De 50 000 à 100 000€', "Plus de 100 000€"], axis=0)
crossed_11_7_perc = crossed_11_7_perc.reindex(["Oui", "Non"], axis=1)
crossed_11_7_perc
| Est-ce que l'activité commerciale principale de votre entreprise répond à un *enjeu social ou environnemental* ? | Oui | Non |
|---|---|---|
| Quel est le *budget annuel* mis à disposition de votre département RSE ? | ||
| Aucun budget | 62.209302 | 37.790698 |
| De 1 à 5 000€ | 56.923077 | 43.076923 |
| De 5 000 à 20 000€ | 55.769231 | 44.230769 |
| De 20 000 à 50 000€ | 60.655738 | 39.344262 |
| De 50 000 à 100 000€ | 69.230769 | 30.769231 |
| Plus de 100 000€ | 61.111111 | 38.888889 |
import matplotlib.pyplot as plt
# plot grouped bar chart
crossed_11_7_perc.plot.bar(rot=90)
plt.legend(bbox_to_anchor=(1.7, 1))
plt.title("Proportion d'entreprises répondantes dont l'activité commerciale principale comprend un enjeu social ou environnementale en fonction de leur budget RSE")
# Export fichier
plt.savefig("crossed_11_7_perc.svg", bbox_inches='tight')
files.download("crossed_11_7_perc.svg")
plt.savefig("crossed_11_7_perc.png", bbox_inches='tight')
files.download("crossed_11_7_perc.png")
# Sélection des données entreprises engagées
crossed_12_2 = df_2022[['categ_taille_entreprises', 'question_12_entreprise_mission', 'question_12_BCorp', 'question_12_Lucie', 'question_12_1%', 'question_12_esus']]
crossed_12_2 = crossed_12_2.replace(["Nous le sommes déjà"], 1)
crossed_12_2 = crossed_12_2.replace(["Nous sommes engagés dans le processus", "Nous y réfléchissons", "Je ne connais pas", "Pas du tout", "Non pertinent chez nous"], 0)
# Groupby par entreprises engagées
crossed_12_2 = crossed_12_2.groupby('categ_taille_entreprises').sum()
crossed_12_2 = crossed_12_2.reindex(["TPE", "PME", "ETI", "Grand groupe"])
# Pourcentage
crossed_12_2_perc = crossed_12_2.div(crossed_12_2.sum(axis=1), axis=0)*100
display(crossed_12_2.head())
display(crossed_12_2_perc.head())
| question_12_entreprise_mission | question_12_BCorp | question_12_Lucie | question_12_1% | question_12_esus | |
|---|---|---|---|---|---|
| categ_taille_entreprises | |||||
| TPE | 20.0 | 7.0 | 1.0 | 11.0 | 2.0 |
| PME | 39.0 | 26.0 | 13.0 | 12.0 | 7.0 |
| ETI | 29.0 | 8.0 | 7.0 | 8.0 | 4.0 |
| Grand groupe | 6.0 | 0.0 | 1.0 | 3.0 | 2.0 |
| question_12_entreprise_mission | question_12_BCorp | question_12_Lucie | question_12_1% | question_12_esus | |
|---|---|---|---|---|---|
| categ_taille_entreprises | |||||
| TPE | 48.780488 | 17.073171 | 2.439024 | 26.829268 | 4.878049 |
| PME | 40.206186 | 26.804124 | 13.402062 | 12.371134 | 7.216495 |
| ETI | 51.785714 | 14.285714 | 12.500000 | 14.285714 | 7.142857 |
| Grand groupe | 50.000000 | 0.000000 | 8.333333 | 25.000000 | 16.666667 |
import matplotlib.pyplot as plt
# plot grouped bar chart
crossed_12_2_perc.plot.bar(rot=0)
plt.legend(bbox_to_anchor=(1.05, 1))
plt.title("Questions 12&2 : Labels RSE en fonction de la taille des entreprises engagées")
# Export fichier
plt.savefig("crossed_12_2_perc.svg", bbox_inches='tight')
files.download("crossed_12_2_perc.svg")
plt.savefig("crossed_12_2_perc.png", bbox_inches='tight')
files.download("crossed_12_2_perc.png")
Crossed 12bis part d'entreprises ayant au moins 1 label / ayant 2 labels / n'ayant pas de label avec : La taille de l'entreprise
add_crossed_12 = df_2022[["categ_taille_entreprises", 'question_12_entreprise_mission', 'question_12_BCorp', 'question_12_Lucie', 'question_12_1%', 'question_12_esus']]
display(add_crossed_12.head())
| categ_taille_entreprises | question_12_entreprise_mission | question_12_BCorp | question_12_Lucie | question_12_1% | question_12_esus | |
|---|---|---|---|---|---|---|
| 102 | PME | Pas du tout | Nous y réfléchissons | Nous y réfléchissons | Pas du tout | Pas du tout |
| 93 | PME | Non pertinent chez nous | Non pertinent chez nous | Nous y réfléchissons | Pas du tout | Je ne connais pas |
| 88 | ETI | Non pertinent chez nous | Non pertinent chez nous | Non pertinent chez nous | Non pertinent chez nous | Non pertinent chez nous |
| 78 | TPE | Non pertinent chez nous | Non pertinent chez nous | Non pertinent chez nous | Non pertinent chez nous | Non pertinent chez nous |
| 84 | TPE | Nous y réfléchissons | Je ne connais pas | Je ne connais pas | Nous le sommes déjà | Je ne connais pas |
add_crossed_12 = add_crossed_12.replace(["Nous le sommes déjà"], 1)
add_crossed_12 = add_crossed_12.replace(["Nous sommes engagés dans le processus", "Nous y réfléchissons", "Je ne connais pas", "Pas du tout", "Non pertinent chez nous"], 0)
add_crossed_12.head()
| categ_taille_entreprises | question_12_entreprise_mission | question_12_BCorp | question_12_Lucie | question_12_1% | question_12_esus | |
|---|---|---|---|---|---|---|
| 102 | PME | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 |
| 93 | PME | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 |
| 88 | ETI | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 |
| 78 | TPE | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 |
| 84 | TPE | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 |
add_crossed_12 = add_crossed_12.reset_index()
add_crossed_12.head()
| index | categ_taille_entreprises | question_12_entreprise_mission | question_12_BCorp | question_12_Lucie | question_12_1% | question_12_esus | |
|---|---|---|---|---|---|---|---|
| 0 | 102 | PME | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 |
| 1 | 93 | PME | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 |
| 2 | 88 | ETI | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 |
| 3 | 78 | TPE | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 |
| 4 | 84 | TPE | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 |
col_list= ['question_12_entreprise_mission', 'question_12_BCorp', 'question_12_Lucie', 'question_12_1%','question_12_esus']
add_crossed_12['Sum'] = add_crossed_12[col_list].sum(axis=1)
add_crossed_12 = add_crossed_12[['categ_taille_entreprises', 'Sum']]
add_crossed_12
| categ_taille_entreprises | Sum | |
|---|---|---|
| 0 | PME | 0.0 |
| 1 | PME | 0.0 |
| 2 | ETI | 0.0 |
| 3 | TPE | 0.0 |
| 4 | TPE | 1.0 |
| ... | ... | ... |
| 787 | ETI | 0.0 |
| 788 | PME | 0.0 |
| 789 | PME | 0.0 |
| 790 | PME | 0.0 |
| 791 | PME | 1.0 |
792 rows × 2 columns
add_crossed_12["Sum"] = add_crossed_12["Sum"].astype(int)
add_crossed_12["Sum"] = add_crossed_12["Sum"].astype(str)
add_crossed_12.dtypes
categ_taille_entreprises object Sum object dtype: object
add_crossed_12_vf = pd.crosstab(add_crossed_12['categ_taille_entreprises'], add_crossed_12['Sum'])
add_crossed_12_vf = add_crossed_12_vf.reindex(["TPE", "PME", "ETI", "Grand groupe"])
add_crossed_12_vf
| Sum | 0 | 1 | 2 | 3 | 4 |
|---|---|---|---|---|---|
| categ_taille_entreprises | |||||
| TPE | 89 | 24 | 7 | 1 | 0 |
| PME | 298 | 64 | 10 | 3 | 1 |
| ETI | 193 | 38 | 9 | 0 | 0 |
| Grand groupe | 45 | 7 | 1 | 1 | 0 |
add_crossed_12_2_vf_perc = add_crossed_12_vf.div(add_crossed_12_vf.sum(axis=1), axis=0)*100
add_crossed_12_2_vf_perc
| Sum | 0 | 1 | 2 | 3 | 4 |
|---|---|---|---|---|---|
| categ_taille_entreprises | |||||
| TPE | 73.553719 | 19.834711 | 5.785124 | 0.826446 | 0.000000 |
| PME | 79.255319 | 17.021277 | 2.659574 | 0.797872 | 0.265957 |
| ETI | 80.416667 | 15.833333 | 3.750000 | 0.000000 | 0.000000 |
| Grand groupe | 83.333333 | 12.962963 | 1.851852 | 1.851852 | 0.000000 |
sum_column = add_crossed_12_2_vf_perc["2"] + add_crossed_12_2_vf_perc["3"] + add_crossed_12_2_vf_perc["4"]
add_crossed_12_2_vf_perc["2+"] = sum_column
add_crossed_12_2_vf_perc = add_crossed_12_2_vf_perc[["0", "1", "2+"]]
add_crossed_12_2_vf_perc
| Sum | 0 | 1 | 2+ |
|---|---|---|---|
| categ_taille_entreprises | |||
| TPE | 73.553719 | 19.834711 | 6.611570 |
| PME | 79.255319 | 17.021277 | 3.723404 |
| ETI | 80.416667 | 15.833333 | 3.750000 |
| Grand groupe | 83.333333 | 12.962963 | 3.703704 |
# plot bar chart
add_crossed_12_2_vf_perc.plot(kind='bar', stacked=True)
plt.legend(bbox_to_anchor=(1.4, 1))
plt.title("Nb de labels en fonction de la taille de l'entreprise")
# Export fichier
plt.savefig("add_crossed_12_2_vf_perc.svg", bbox_inches='tight')
files.download("add_crossed_12_2_vf_perc.svg")
plt.savefig("add_crossed_12_2_vf_perc.png", bbox_inches='tight')
files.download("add_crossed_12_2_vf_perc.png")
add_crossed_12bis = df_2022[["Quel est le *budget annuel* mis à disposition de votre département RSE ?", 'question_12_entreprise_mission', 'question_12_BCorp', 'question_12_Lucie', 'question_12_1%', 'question_12_esus']]
display(add_crossed_12bis.head())
| Quel est le *budget annuel* mis à disposition de votre département RSE ? | question_12_entreprise_mission | question_12_BCorp | question_12_Lucie | question_12_1% | question_12_esus | |
|---|---|---|---|---|---|---|
| 102 | Aucun budget | Pas du tout | Nous y réfléchissons | Nous y réfléchissons | Pas du tout | Pas du tout |
| 93 | De 1 à 5 000€ | Non pertinent chez nous | Non pertinent chez nous | Nous y réfléchissons | Pas du tout | Je ne connais pas |
| 88 | NaN | Non pertinent chez nous | Non pertinent chez nous | Non pertinent chez nous | Non pertinent chez nous | Non pertinent chez nous |
| 78 | Aucun budget | Non pertinent chez nous | Non pertinent chez nous | Non pertinent chez nous | Non pertinent chez nous | Non pertinent chez nous |
| 84 | Aucun budget | Nous y réfléchissons | Je ne connais pas | Je ne connais pas | Nous le sommes déjà | Je ne connais pas |
add_crossed_12bis = add_crossed_12bis.replace(["Nous le sommes déjà"], 1)
add_crossed_12bis = add_crossed_12bis.replace(["Nous sommes engagés dans le processus", "Nous y réfléchissons", "Je ne connais pas", "Pas du tout", "Non pertinent chez nous"], 0)
add_crossed_12bis.head()
| Quel est le *budget annuel* mis à disposition de votre département RSE ? | question_12_entreprise_mission | question_12_BCorp | question_12_Lucie | question_12_1% | question_12_esus | |
|---|---|---|---|---|---|---|
| 102 | Aucun budget | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 |
| 93 | De 1 à 5 000€ | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 |
| 88 | NaN | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 |
| 78 | Aucun budget | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 |
| 84 | Aucun budget | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 |
add_crossed_12bis = add_crossed_12bis.reset_index()
add_crossed_12bis.head()
| index | Quel est le *budget annuel* mis à disposition de votre département RSE ? | question_12_entreprise_mission | question_12_BCorp | question_12_Lucie | question_12_1% | question_12_esus | |
|---|---|---|---|---|---|---|---|
| 0 | 102 | Aucun budget | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 |
| 1 | 93 | De 1 à 5 000€ | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 |
| 2 | 88 | NaN | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 |
| 3 | 78 | Aucun budget | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 |
| 4 | 84 | Aucun budget | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 |
col_list2= ['question_12_entreprise_mission', 'question_12_BCorp', 'question_12_Lucie', 'question_12_1%','question_12_esus']
add_crossed_12bis['Sum'] = add_crossed_12bis[col_list2].sum(axis=1)
add_crossed_12bis = add_crossed_12bis[['Quel est le *budget annuel* mis à disposition de votre département RSE ?', 'Sum']]
add_crossed_12bis
| Quel est le *budget annuel* mis à disposition de votre département RSE ? | Sum | |
|---|---|---|
| 0 | Aucun budget | 0.0 |
| 1 | De 1 à 5 000€ | 0.0 |
| 2 | NaN | 0.0 |
| 3 | Aucun budget | 0.0 |
| 4 | Aucun budget | 1.0 |
| ... | ... | ... |
| 787 | NaN | 0.0 |
| 788 | Aucun budget | 0.0 |
| 789 | Aucun budget | 0.0 |
| 790 | Aucun budget | 0.0 |
| 791 | NaN | 1.0 |
792 rows × 2 columns
add_crossed_12bis["Sum"] = add_crossed_12bis["Sum"].astype(int)
add_crossed_12bis["Sum"] = add_crossed_12bis["Sum"].astype(str)
add_crossed_12bis.dtypes
/usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:1: SettingWithCopyWarning: A value is trying to be set on a copy of a slice from a DataFrame. Try using .loc[row_indexer,col_indexer] = value instead See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy /usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:2: SettingWithCopyWarning: A value is trying to be set on a copy of a slice from a DataFrame. Try using .loc[row_indexer,col_indexer] = value instead See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
Quel est le *budget annuel* mis à disposition de votre département RSE ? object Sum object dtype: object
add_crossed_12bis_vf = pd.crosstab(add_crossed_12bis['Quel est le *budget annuel* mis à disposition de votre département RSE ?'], add_crossed_12bis['Sum'])
add_crossed_12bis_vf = add_crossed_12bis_vf.reindex(["Aucun budget",'De 1 à 5 000€','De 5 000 à 20 000€', 'De 20 000 à 50 000€', 'De 50 000 à 100 000€', "Plus de 100 000€"])
add_crossed_12bis_vf
| Sum | 0 | 1 | 2 | 3 | 4 |
|---|---|---|---|---|---|
| Quel est le *budget annuel* mis à disposition de votre département RSE ? | |||||
| Aucun budget | 158 | 25 | 1 | 0 | 0 |
| De 1 à 5 000€ | 103 | 29 | 6 | 1 | 1 |
| De 5 000 à 20 000€ | 75 | 26 | 6 | 2 | 0 |
| De 20 000 à 50 000€ | 44 | 14 | 3 | 0 | 0 |
| De 50 000 à 100 000€ | 24 | 3 | 1 | 0 | 0 |
| Plus de 100 000€ | 43 | 10 | 2 | 1 | 0 |
add_crossed_12bis_vf_perc = add_crossed_12bis_vf.div(add_crossed_12bis_vf.sum(axis=1), axis=0)*100
add_crossed_12bis_vf_perc
| Sum | 0 | 1 | 2 | 3 | 4 |
|---|---|---|---|---|---|
| Quel est le *budget annuel* mis à disposition de votre département RSE ? | |||||
| Aucun budget | 85.869565 | 13.586957 | 0.543478 | 0.000000 | 0.000000 |
| De 1 à 5 000€ | 73.571429 | 20.714286 | 4.285714 | 0.714286 | 0.714286 |
| De 5 000 à 20 000€ | 68.807339 | 23.853211 | 5.504587 | 1.834862 | 0.000000 |
| De 20 000 à 50 000€ | 72.131148 | 22.950820 | 4.918033 | 0.000000 | 0.000000 |
| De 50 000 à 100 000€ | 85.714286 | 10.714286 | 3.571429 | 0.000000 | 0.000000 |
| Plus de 100 000€ | 76.785714 | 17.857143 | 3.571429 | 1.785714 | 0.000000 |
sum_column = add_crossed_12bis_vf_perc["2"] + add_crossed_12bis_vf_perc["3"] + add_crossed_12bis_vf_perc["4"]
add_crossed_12bis_vf_perc["2+"] = sum_column
add_crossed_12_budget_vf_perc = add_crossed_12bis_vf_perc[["0", "1", "2+"]]
add_crossed_12_budget_vf_perc
| Sum | 0 | 1 | 2+ |
|---|---|---|---|
| Quel est le *budget annuel* mis à disposition de votre département RSE ? | |||
| Aucun budget | 85.869565 | 13.586957 | 0.543478 |
| De 1 à 5 000€ | 73.571429 | 20.714286 | 5.714286 |
| De 5 000 à 20 000€ | 68.807339 | 23.853211 | 7.339450 |
| De 20 000 à 50 000€ | 72.131148 | 22.950820 | 4.918033 |
| De 50 000 à 100 000€ | 85.714286 | 10.714286 | 3.571429 |
| Plus de 100 000€ | 76.785714 | 17.857143 | 5.357143 |
# plot bar chart
add_crossed_12_budget_vf_perc.plot(kind='bar', stacked=True)
plt.legend(bbox_to_anchor=(1.4, 1))
plt.title("Nb de labels en fonction de la taille de l'entreprise")
# Export fichier
plt.savefig("add_crossed_12_budget_vf_perc.svg", bbox_inches='tight')
files.download("add_crossed_12_budget_vf_perc.svg")
plt.savefig("add_crossed_12_budget_vf_perc.png", bbox_inches='tight')
files.download("add_crossed_12_budget_vf_perc.png")
# Sélection des données entreprises engagées
crossed_12_7 = df_2022[["Quel est le *budget annuel* mis à disposition de votre département RSE ?", 'question_12_entreprise_mission', 'question_12_BCorp', 'question_12_Lucie', 'question_12_1%', 'question_12_esus']]
crossed_12_7 = crossed_12_7.replace(["Nous le sommes déjà"], 1)
crossed_12_7 = crossed_12_7.replace(["Nous sommes engagés dans le processus", "Nous y réfléchissons", "Je ne connais pas", "Pas du tout", "Non pertinent chez nous"], 0)
# Groupby par entreprises engagées
crossed_12_7 = crossed_12_7.groupby("Quel est le *budget annuel* mis à disposition de votre département RSE ?").sum()
crossed_12_7 = crossed_12_7.drop("Je ne souhaite pas partager ce chiffre", axis=0)
crossed_12_7 = crossed_12_7.reindex(["Aucun budget",'De 1 à 5 000€','De 5 000 à 20 000€', 'De 20 000 à 50 000€', 'De 50 000 à 100 000€', "Plus de 100 000€"])
# Pourcentage
crossed_12_7_perc = crossed_12_7.div(crossed_12_7.sum(axis=1), axis=0)*100
display(crossed_12_7)
display(crossed_12_7_perc.head())
| question_12_entreprise_mission | question_12_BCorp | question_12_Lucie | question_12_1% | question_12_esus | |
|---|---|---|---|---|---|
| Quel est le *budget annuel* mis à disposition de votre département RSE ? | |||||
| Aucun budget | 9.0 | 5.0 | 4.0 | 5.0 | 4.0 |
| De 1 à 5 000€ | 24.0 | 8.0 | 3.0 | 10.0 | 3.0 |
| De 5 000 à 20 000€ | 17.0 | 10.0 | 5.0 | 8.0 | 4.0 |
| De 20 000 à 50 000€ | 8.0 | 7.0 | 3.0 | 2.0 | 0.0 |
| De 50 000 à 100 000€ | 2.0 | 1.0 | 1.0 | 0.0 | 1.0 |
| Plus de 100 000€ | 10.0 | 3.0 | 1.0 | 2.0 | 1.0 |
| question_12_entreprise_mission | question_12_BCorp | question_12_Lucie | question_12_1% | question_12_esus | |
|---|---|---|---|---|---|
| Quel est le *budget annuel* mis à disposition de votre département RSE ? | |||||
| Aucun budget | 33.333333 | 18.518519 | 14.814815 | 18.518519 | 14.814815 |
| De 1 à 5 000€ | 50.000000 | 16.666667 | 6.250000 | 20.833333 | 6.250000 |
| De 5 000 à 20 000€ | 38.636364 | 22.727273 | 11.363636 | 18.181818 | 9.090909 |
| De 20 000 à 50 000€ | 40.000000 | 35.000000 | 15.000000 | 10.000000 | 0.000000 |
| De 50 000 à 100 000€ | 40.000000 | 20.000000 | 20.000000 | 0.000000 | 20.000000 |
import matplotlib.pyplot as plt
# plot grouped bar chart
crossed_12_7_perc.plot.bar(rot=90)
plt.legend(bbox_to_anchor=(1.05, 1))
plt.title("Questions 12&7 : Labels RSE en fonction du budget des entreprises engagées")
# Export fichier
plt.savefig("crossed_12_7_perc.svg", bbox_inches='tight')
files.download("crossed_12_7_perc.svg")
plt.savefig("crossed_12_7_perc.png", bbox_inches='tight')
files.download("crossed_12_7_perc.png")
# Sélection des données entreprises engagées
crossed_12_4 = df_2022[["equipe_RSE", 'question_12_entreprise_mission', 'question_12_BCorp', 'question_12_Lucie', 'question_12_1%', 'question_12_esus']]
crossed_12_4 = crossed_12_4.replace(["Nous le sommes déjà"], 1)
crossed_12_4 = crossed_12_4.replace(["Nous sommes engagés dans le processus", "Nous y réfléchissons", "Je ne connais pas", "Pas du tout", "Non pertinent chez nous"], 0)
# Groupby par entreprises engagées
crossed_12_4 = crossed_12_4.groupby("equipe_RSE").sum()
crossed_12_4 = crossed_12_4.reindex(["1-2", "3-5", "6-10", ">10", "Il n'y a pas d'équipe dédiée"])
# Pourcentage
crossed_12_4_perc = crossed_12_4.div(crossed_12_4.sum(axis=1), axis=0)*100
display(crossed_12_4)
display(crossed_12_4_perc.head())
| question_12_entreprise_mission | question_12_BCorp | question_12_Lucie | question_12_1% | question_12_esus | |
|---|---|---|---|---|---|
| equipe_RSE | |||||
| 1-2 | 40.0 | 22.0 | 15.0 | 13.0 | 7.0 |
| 3-5 | 15.0 | 6.0 | 3.0 | 3.0 | 3.0 |
| 6-10 | 2.0 | 2.0 | 0.0 | 2.0 | 0.0 |
| >10 | 5.0 | 1.0 | 1.0 | 3.0 | 1.0 |
| Il n'y a pas d'équipe dédiée | 30.0 | 10.0 | 3.0 | 13.0 | 4.0 |
| question_12_entreprise_mission | question_12_BCorp | question_12_Lucie | question_12_1% | question_12_esus | |
|---|---|---|---|---|---|
| equipe_RSE | |||||
| 1-2 | 41.237113 | 22.680412 | 15.463918 | 13.402062 | 7.216495 |
| 3-5 | 50.000000 | 20.000000 | 10.000000 | 10.000000 | 10.000000 |
| 6-10 | 33.333333 | 33.333333 | 0.000000 | 33.333333 | 0.000000 |
| >10 | 45.454545 | 9.090909 | 9.090909 | 27.272727 | 9.090909 |
| Il n'y a pas d'équipe dédiée | 50.000000 | 16.666667 | 5.000000 | 21.666667 | 6.666667 |
import matplotlib.pyplot as plt
# plot grouped bar chart
crossed_12_4_perc.plot.bar(rot=90)
plt.legend(bbox_to_anchor=(1.05, 1))
plt.title("Questions 12&4 : Labels RSE en fonction de la taille des équipes RSE des entreprises engagées")
# Export fichier
plt.savefig("crossed_12_4_perc.svg", bbox_inches='tight')
files.download("crossed_12_4_perc.svg")
plt.savefig("crossed_12_4_perc.png", bbox_inches='tight')
files.download("crossed_12_4_perc.png")
crossed_13_2 = df_2022[['categ_taille_entreprises','question_13_marque_employ', 'question_13_image', 'question_13_urgence','question_13_invest', 'question_13_volonte', 'question_13_legales']]
crossed_13_2.head()
| categ_taille_entreprises | question_13_marque_employ | question_13_image | question_13_urgence | question_13_invest | question_13_volonte | question_13_legales | |
|---|---|---|---|---|---|---|---|
| 102 | PME | Peu Important | Important | Peu Important | Peu Important | Peu Important | Important |
| 93 | PME | Peu Important | Très important | Important | Important | Très important | Important |
| 88 | ETI | Important | Très important | Important | Important | Très important | Important |
| 78 | TPE | Très important | Très important | Très important | Non pertinent | Très important | Très important |
| 84 | TPE | Important | Important | Important | Non pertinent | Non pertinent | Non pertinent |
# Pour les TPE
crossed_13_2_tpe = crossed_13_2.loc[crossed_13_2['categ_taille_entreprises'] == 'TPE']
crossed_13_2_tpe = crossed_13_2_tpe[['question_13_marque_employ', 'question_13_image', 'question_13_urgence','question_13_invest', 'question_13_volonte', 'question_13_legales']]
# Pivot de la table
crossed_13_2_tpe = crossed_13_2_tpe.apply(pd.Series.value_counts).fillna(0).astype(int)
crossed_13_2_tpe = crossed_13_2_tpe.reset_index()
crossed_13_2_tpe.rename(columns={'index':'Degré motivation'}, inplace=True)
crossed_13_2_tpe = crossed_13_2_tpe.pivot_table(columns='Degré motivation')
crossed_13_2_tpe = crossed_13_2_tpe.drop("Non pertinent", axis=1)
crossed_13_2_tpe = crossed_13_2_tpe.reindex(["Pas important", "Peu Important", "Important", "Très important"], axis=1)
display(crossed_13_2_tpe)
# Important Y/N
crossed_13_2_tpe['Oui'] = crossed_13_2_tpe['Important'] + crossed_13_2_tpe['Très important']
crossed_13_2_tpe['Non'] = crossed_13_2_tpe['Pas important'] + crossed_13_2_tpe['Peu Important']
crossed_13_2_tpe = crossed_13_2_tpe[['Oui', 'Non']]
display(crossed_13_2_tpe)
# En pourcentage
crossed_13_2_tpe_perc = crossed_13_2_tpe.div(crossed_13_2_tpe.sum(axis=1), axis=0)*100
crossed_13_2_tpe_perc = crossed_13_2_tpe_perc.sort_values(by="Oui")
display(crossed_13_2_tpe_perc)
# plot bar chart
crossed_13_2_tpe_perc.plot(kind='bar')
plt.legend(bbox_to_anchor=(1.4, 1))
plt.title("Motivation des politiques RSE dans les TPE")
# Export fichier
plt.savefig("crossed_13_2_tpe_perc.svg", bbox_inches='tight')
files.download("crossed_13_2_tpe_perc.svg")
plt.savefig("crossed_13_2_tpe_perc.png", bbox_inches='tight')
files.download("crossed_13_2_tpe_perc.png")
| Degré motivation | Pas important | Peu Important | Important | Très important |
|---|---|---|---|---|
| question_13_image | 1 | 6 | 52 | 58 |
| question_13_invest | 5 | 16 | 30 | 18 |
| question_13_legales | 10 | 29 | 37 | 23 |
| question_13_marque_employ | 2 | 11 | 49 | 47 |
| question_13_urgence | 0 | 4 | 36 | 77 |
| question_13_volonte | 1 | 4 | 22 | 87 |
| Degré motivation | Oui | Non |
|---|---|---|
| question_13_image | 110 | 7 |
| question_13_invest | 48 | 21 |
| question_13_legales | 60 | 39 |
| question_13_marque_employ | 96 | 13 |
| question_13_urgence | 113 | 4 |
| question_13_volonte | 109 | 5 |
| Degré motivation | Oui | Non |
|---|---|---|
| question_13_legales | 60.606061 | 39.393939 |
| question_13_invest | 69.565217 | 30.434783 |
| question_13_marque_employ | 88.073394 | 11.926606 |
| question_13_image | 94.017094 | 5.982906 |
| question_13_volonte | 95.614035 | 4.385965 |
| question_13_urgence | 96.581197 | 3.418803 |
# Pour les PME
crossed_13_2_pme = crossed_13_2.loc[crossed_13_2['categ_taille_entreprises'] == 'PME']
crossed_13_2_pme = crossed_13_2_pme[['question_13_marque_employ', 'question_13_image', 'question_13_urgence','question_13_invest', 'question_13_volonte', 'question_13_legales']]
# Pivot de la table
crossed_13_2_pme = crossed_13_2_pme.apply(pd.Series.value_counts).fillna(0).astype(int)
crossed_13_2_pme = crossed_13_2_pme.reset_index()
crossed_13_2_pme.rename(columns={'index':'Degré motivation'}, inplace=True)
crossed_13_2_pme = crossed_13_2_pme.pivot_table(columns='Degré motivation')
crossed_13_2_pme = crossed_13_2_pme.drop("Non pertinent", axis=1)
crossed_13_2_pme = crossed_13_2_pme.reindex(["Pas important", "Peu Important", "Important", "Très important"], axis=1)
display(crossed_13_2_pme)
# Important Y/N
crossed_13_2_pme['Oui'] = crossed_13_2_pme['Important'] + crossed_13_2_pme['Très important']
crossed_13_2_pme['Non'] = crossed_13_2_pme['Pas important'] + crossed_13_2_pme['Peu Important']
crossed_13_2_pme = crossed_13_2_pme[['Oui', 'Non']]
display(crossed_13_2_pme)
# En pourcentage
crossed_13_2_pme_perc = crossed_13_2_pme.div(crossed_13_2_pme.sum(axis=1), axis=0)*100
crossed_13_2_pme_perc = crossed_13_2_pme_perc.sort_values(by="Oui")
display(crossed_13_2_pme_perc)
# plot bar chart
crossed_13_2_pme_perc.plot(kind='bar')
plt.legend(bbox_to_anchor=(1.4, 1))
plt.title("Motivation des politiques RSE dans les PME")
# Export fichier
plt.savefig("crossed_13_2_pme_perc.svg", bbox_inches='tight')
files.download("crossed_13_2_pme_perc.svg")
plt.savefig("crossed_13_2_pme_perc.png", bbox_inches='tight')
files.download("crossed_13_2_pme_perc.png")
| Degré motivation | Pas important | Peu Important | Important | Très important |
|---|---|---|---|---|
| question_13_image | 6 | 29 | 136 | 200 |
| question_13_invest | 34 | 85 | 119 | 59 |
| question_13_legales | 37 | 85 | 171 | 61 |
| question_13_marque_employ | 12 | 29 | 140 | 189 |
| question_13_urgence | 9 | 43 | 144 | 180 |
| question_13_volonte | 14 | 33 | 123 | 201 |
| Degré motivation | Oui | Non |
|---|---|---|
| question_13_image | 336 | 35 |
| question_13_invest | 178 | 119 |
| question_13_legales | 232 | 122 |
| question_13_marque_employ | 329 | 41 |
| question_13_urgence | 324 | 52 |
| question_13_volonte | 324 | 47 |
| Degré motivation | Oui | Non |
|---|---|---|
| question_13_invest | 59.932660 | 40.067340 |
| question_13_legales | 65.536723 | 34.463277 |
| question_13_urgence | 86.170213 | 13.829787 |
| question_13_volonte | 87.331536 | 12.668464 |
| question_13_marque_employ | 88.918919 | 11.081081 |
| question_13_image | 90.566038 | 9.433962 |
# Pour les ETI
crossed_13_2_eti = crossed_13_2.loc[crossed_13_2['categ_taille_entreprises'] == 'ETI']
crossed_13_2_eti = crossed_13_2_eti[['question_13_marque_employ', 'question_13_image', 'question_13_urgence','question_13_invest', 'question_13_volonte', 'question_13_legales']]
# Pivot de la table
crossed_13_2_eti = crossed_13_2_eti.apply(pd.Series.value_counts).fillna(0).astype(int)
crossed_13_2_eti = crossed_13_2_eti.reset_index()
crossed_13_2_eti.rename(columns={'index':'Degré motivation'}, inplace=True)
crossed_13_2_eti = crossed_13_2_eti.pivot_table(columns='Degré motivation')
crossed_13_2_eti = crossed_13_2_eti.drop("Non pertinent", axis=1)
crossed_13_2_eti = crossed_13_2_eti.reindex(["Pas important", "Peu Important", "Important", "Très important"], axis=1)
display(crossed_13_2_eti)
# Important Y/N
crossed_13_2_eti['Oui'] = crossed_13_2_eti['Important'] + crossed_13_2_eti['Très important']
crossed_13_2_eti['Non'] = crossed_13_2_eti['Pas important'] + crossed_13_2_eti['Peu Important']
crossed_13_2_eti = crossed_13_2_eti[['Oui', 'Non']]
display(crossed_13_2_eti)
# En pourcentage
crossed_13_2_eti_perc = crossed_13_2_eti.div(crossed_13_2_eti.sum(axis=1), axis=0)*100
crossed_13_2_eti_perc = crossed_13_2_eti_perc.sort_values(by="Oui")
display(crossed_13_2_eti_perc)
# plot bar chart
crossed_13_2_eti_perc.plot(kind='bar')
plt.legend(bbox_to_anchor=(1.4, 1))
plt.title("Motivation des politiques RSE dans les ETI")
# Export fichier
plt.savefig("crossed_13_2_eti_perc.svg", bbox_inches='tight')
files.download("crossed_13_2_eti_perc.svg")
plt.savefig("crossed_13_2_eti_perc.png", bbox_inches='tight')
files.download("crossed_13_2_eti_perc.png")
| Degré motivation | Pas important | Peu Important | Important | Très important |
|---|---|---|---|---|
| question_13_image | 3 | 14 | 108 | 113 |
| question_13_invest | 16 | 53 | 79 | 47 |
| question_13_legales | 6 | 41 | 121 | 68 |
| question_13_marque_employ | 0 | 18 | 97 | 124 |
| question_13_urgence | 12 | 33 | 96 | 99 |
| question_13_volonte | 5 | 24 | 114 | 97 |
| Degré motivation | Oui | Non |
|---|---|---|
| question_13_image | 221 | 17 |
| question_13_invest | 126 | 69 |
| question_13_legales | 189 | 47 |
| question_13_marque_employ | 221 | 18 |
| question_13_urgence | 195 | 45 |
| question_13_volonte | 211 | 29 |
| Degré motivation | Oui | Non |
|---|---|---|
| question_13_invest | 64.615385 | 35.384615 |
| question_13_legales | 80.084746 | 19.915254 |
| question_13_urgence | 81.250000 | 18.750000 |
| question_13_volonte | 87.916667 | 12.083333 |
| question_13_marque_employ | 92.468619 | 7.531381 |
| question_13_image | 92.857143 | 7.142857 |
# Pour les grands groupes
crossed_13_2_gg = crossed_13_2.loc[crossed_13_2['categ_taille_entreprises'] == 'Grand groupe']
crossed_13_2_gg = crossed_13_2_gg[['question_13_marque_employ', 'question_13_image', 'question_13_urgence','question_13_invest', 'question_13_volonte', 'question_13_legales']]
# Pivot de la table
crossed_13_2_gg = crossed_13_2_gg.apply(pd.Series.value_counts).fillna(0).astype(int)
crossed_13_2_gg = crossed_13_2_gg.reset_index()
crossed_13_2_gg.rename(columns={'index':'Degré motivation'}, inplace=True)
crossed_13_2_gg = crossed_13_2_gg.pivot_table(columns='Degré motivation')
crossed_13_2_gg = crossed_13_2_gg.drop("Non pertinent", axis=1)
crossed_13_2_gg = crossed_13_2_gg.reindex(["Pas important", "Peu Important", "Important", "Très important"], axis=1)
display(crossed_13_2_gg)
# Important Y/N
crossed_13_2_gg['Oui'] = crossed_13_2_gg['Important'] + crossed_13_2_gg['Très important']
crossed_13_2_gg['Non'] = crossed_13_2_gg['Pas important'] + crossed_13_2_gg['Peu Important']
crossed_13_2_gg = crossed_13_2_gg[['Oui', 'Non']]
display(crossed_13_2_gg)
# En pourcentage
crossed_13_2_gg_perc = crossed_13_2_gg.div(crossed_13_2_gg.sum(axis=1), axis=0)*100
crossed_13_2_gg_perc = crossed_13_2_gg_perc.sort_values(by="Oui")
display(crossed_13_2_gg_perc)
# plot bar chart
crossed_13_2_gg_perc.plot(kind='bar')
plt.legend(bbox_to_anchor=(1.4, 1))
plt.title("Motivation des politiques RSE dans les Grands groupes")
# Export fichier
plt.savefig("crossed_13_2_gg_perc.svg", bbox_inches='tight')
files.download("crossed_13_2_gg_perc.svg")
plt.savefig("crossed_13_2_gg_perc.png", bbox_inches='tight')
files.download("crossed_13_2_gg_perc.png")
| Degré motivation | Pas important | Peu Important | Important | Très important |
|---|---|---|---|---|
| question_13_image | 1 | 2 | 20 | 31 |
| question_13_invest | 3 | 5 | 24 | 19 |
| question_13_legales | 1 | 1 | 22 | 30 |
| question_13_marque_employ | 1 | 1 | 23 | 29 |
| question_13_urgence | 2 | 8 | 19 | 25 |
| question_13_volonte | 1 | 5 | 25 | 23 |
| Degré motivation | Oui | Non |
|---|---|---|
| question_13_image | 51 | 3 |
| question_13_invest | 43 | 8 |
| question_13_legales | 52 | 2 |
| question_13_marque_employ | 52 | 2 |
| question_13_urgence | 44 | 10 |
| question_13_volonte | 48 | 6 |
| Degré motivation | Oui | Non |
|---|---|---|
| question_13_urgence | 81.481481 | 18.518519 |
| question_13_invest | 84.313725 | 15.686275 |
| question_13_volonte | 88.888889 | 11.111111 |
| question_13_image | 94.444444 | 5.555556 |
| question_13_legales | 96.296296 | 3.703704 |
| question_13_marque_employ | 96.296296 | 3.703704 |
crossed_14_2 = df_2022[['categ_taille_entreprises','question_14_temps', 'question_14_budget', 'question_14_equipe', 'question_14_connaissance', 'question_14_m_management','question_14_direction', 'question_14_ope', 'question_14_long_terme','question_14_impact']]
crossed_14_2.head()
| categ_taille_entreprises | question_14_temps | question_14_budget | question_14_equipe | question_14_connaissance | question_14_m_management | question_14_direction | question_14_ope | question_14_long_terme | question_14_impact | |
|---|---|---|---|---|---|---|---|---|---|---|
| 102 | PME | Important | Important | Peu Important | Pas important | Important | Très important | Pas important | Très important | NaN |
| 93 | PME | Très important | Important | Important | Important | Important | Non pertinent | Important | Très important | NaN |
| 88 | ETI | Très important | Très important | Très important | Peu Important | Important | Peu Important | Peu Important | Peu Important | NaN |
| 78 | TPE | Non pertinent | Non pertinent | Non pertinent | Non pertinent | Non pertinent | Non pertinent | Non pertinent | Non pertinent | NaN |
| 84 | TPE | Peu Important | Important | Peu Important | Important | Non pertinent | Non pertinent | Non pertinent | Important | NaN |
# Pour les TPE
crossed_14_2_tpe = crossed_14_2.loc[crossed_14_2['categ_taille_entreprises'] == 'TPE']
crossed_14_2_tpe = crossed_14_2_tpe[['question_14_temps', 'question_14_budget', 'question_14_equipe', 'question_14_connaissance', 'question_14_m_management','question_14_direction', 'question_14_ope', 'question_14_long_terme','question_14_impact']]
# Pivot de la table
crossed_14_2_tpe = crossed_14_2_tpe.apply(pd.Series.value_counts).fillna(0).astype(int)
crossed_14_2_tpe = crossed_14_2_tpe.reset_index()
crossed_14_2_tpe.rename(columns={'index':'Freins'}, inplace=True)
crossed_14_2_tpe = crossed_14_2_tpe.pivot_table(columns='Freins')
crossed_14_2_tpe = crossed_14_2_tpe.drop("Non pertinent", axis=1)
crossed_14_2_tpe = crossed_14_2_tpe.reindex(["Pas important", "Peu Important", "Important", "Très important"], axis=1)
# Important Y/N
crossed_14_2_tpe['Oui'] = crossed_14_2_tpe['Important'] + crossed_14_2_tpe['Très important']
crossed_14_2_tpe['Non'] = crossed_14_2_tpe['Pas important'] + crossed_14_2_tpe['Peu Important']
crossed_14_2_tpe = crossed_14_2_tpe[['Oui', 'Non']]
display(crossed_14_2_tpe)
# En pourcentage
crossed_14_2_tpe_perc = crossed_14_2_tpe.div(crossed_14_2_tpe.sum(axis=1), axis=0)*100
crossed_14_2_tpe_perc = crossed_14_2_tpe_perc.sort_values(by="Oui")
display(crossed_14_2_tpe_perc)
# plot bar chart
crossed_14_2_tpe_perc.plot(kind='bar')
plt.legend(bbox_to_anchor=(1.4, 1))
plt.title("Freins des politiques RSE dans les TPE")
# Export fichier
plt.savefig("crossed_14_2_tpe_perc.svg", bbox_inches='tight')
files.download("crossed_14_2_tpe_perc.svg")
plt.savefig("crossed_14_2_tpe_perc.png", bbox_inches='tight')
files.download("crossed_14_2_tpe_perc.png")
| Freins | Oui | Non |
|---|---|---|
| question_14_budget | 70 | 35 |
| question_14_connaissance | 37 | 60 |
| question_14_direction | 16 | 54 |
| question_14_equipe | 57 | 44 |
| question_14_impact | 43 | 29 |
| question_14_long_terme | 41 | 49 |
| question_14_m_management | 18 | 32 |
| question_14_ope | 26 | 45 |
| question_14_temps | 78 | 27 |
| Freins | Oui | Non |
|---|---|---|
| question_14_direction | 22.857143 | 77.142857 |
| question_14_m_management | 36.000000 | 64.000000 |
| question_14_ope | 36.619718 | 63.380282 |
| question_14_connaissance | 38.144330 | 61.855670 |
| question_14_long_terme | 45.555556 | 54.444444 |
| question_14_equipe | 56.435644 | 43.564356 |
| question_14_impact | 59.722222 | 40.277778 |
| question_14_budget | 66.666667 | 33.333333 |
| question_14_temps | 74.285714 | 25.714286 |
# Pour les PME
crossed_14_2_pme = crossed_14_2.loc[crossed_14_2['categ_taille_entreprises'] == 'PME']
crossed_14_2_pme = crossed_14_2_pme[['question_14_temps', 'question_14_budget', 'question_14_equipe', 'question_14_connaissance', 'question_14_m_management','question_14_direction', 'question_14_ope', 'question_14_long_terme','question_14_impact']]
# Pivot de la table
crossed_14_2_pme = crossed_14_2_pme.apply(pd.Series.value_counts).fillna(0).astype(int)
crossed_14_2_pme = crossed_14_2_pme.reset_index()
crossed_14_2_pme.rename(columns={'index':'Freins'}, inplace=True)
crossed_14_2_pme = crossed_14_2_pme.pivot_table(columns='Freins')
crossed_14_2_pme = crossed_14_2_pme.drop("Non pertinent", axis=1)
crossed_14_2_pme = crossed_14_2_pme.reindex(["Pas important", "Peu Important", "Important", "Très important"], axis=1)
# Important Y/N
crossed_14_2_pme['Oui'] = crossed_14_2_pme['Important'] + crossed_14_2_pme['Très important']
crossed_14_2_pme['Non'] = crossed_14_2_pme['Pas important'] + crossed_14_2_pme['Peu Important']
crossed_14_2_pme = crossed_14_2_pme[['Oui', 'Non']]
display(crossed_14_2_pme)
# En pourcentage
crossed_14_2_pme_perc = crossed_14_2_pme.div(crossed_14_2_pme.sum(axis=1), axis=0)*100
crossed_14_2_pme_perc = crossed_14_2_pme_perc.sort_values(by="Oui")
display(crossed_14_2_pme_perc)
# plot bar chart
crossed_14_2_pme_perc.plot(kind='bar')
plt.legend(bbox_to_anchor=(1.4, 1))
plt.title("Freins des politiques RSE dans les PME")
# Export fichier
plt.savefig("crossed_14_2_pme_perc.svg", bbox_inches='tight')
files.download("crossed_14_2_pme_perc.svg")
plt.savefig("crossed_14_2_pme_perc.png", bbox_inches='tight')
files.download("crossed_14_2_pme_perc.png")
| Freins | Oui | Non |
|---|---|---|
| question_14_budget | 207 | 154 |
| question_14_connaissance | 194 | 169 |
| question_14_direction | 115 | 224 |
| question_14_equipe | 229 | 132 |
| question_14_impact | 161 | 71 |
| question_14_long_terme | 230 | 130 |
| question_14_m_management | 147 | 188 |
| question_14_ope | 185 | 171 |
| question_14_temps | 315 | 57 |
| Freins | Oui | Non |
|---|---|---|
| question_14_direction | 33.923304 | 66.076696 |
| question_14_m_management | 43.880597 | 56.119403 |
| question_14_ope | 51.966292 | 48.033708 |
| question_14_connaissance | 53.443526 | 46.556474 |
| question_14_budget | 57.340720 | 42.659280 |
| question_14_equipe | 63.434903 | 36.565097 |
| question_14_long_terme | 63.888889 | 36.111111 |
| question_14_impact | 69.396552 | 30.603448 |
| question_14_temps | 84.677419 | 15.322581 |
# Pour les ETI
crossed_14_2_eti = crossed_14_2.loc[crossed_14_2['categ_taille_entreprises'] == 'ETI']
crossed_14_2_eti = crossed_14_2_eti[['question_14_temps', 'question_14_budget', 'question_14_equipe', 'question_14_connaissance', 'question_14_m_management','question_14_direction', 'question_14_ope', 'question_14_long_terme','question_14_impact']]
# Pivot de la table
crossed_14_2_eti = crossed_14_2_eti.apply(pd.Series.value_counts).fillna(0).astype(int)
crossed_14_2_eti = crossed_14_2_eti.reset_index()
crossed_14_2_eti.rename(columns={'index':'Freins'}, inplace=True)
crossed_14_2_eti = crossed_14_2_eti.pivot_table(columns='Freins')
crossed_14_2_eti = crossed_14_2_eti.drop("Non pertinent", axis=1)
crossed_14_2_eti = crossed_14_2_eti.reindex(["Pas important", "Peu Important", "Important", "Très important"], axis=1)
# Important Y/N
crossed_14_2_eti['Oui'] = crossed_14_2_eti['Important'] + crossed_14_2_eti['Très important']
crossed_14_2_eti['Non'] = crossed_14_2_eti['Pas important'] + crossed_14_2_eti['Peu Important']
crossed_14_2_eti = crossed_14_2_eti[['Oui', 'Non']]
display(crossed_14_2_eti)
# En pourcentage
crossed_14_2_eti_perc = crossed_14_2_eti.div(crossed_14_2_eti.sum(axis=1), axis=0)*100
crossed_14_2_eti_perc = crossed_14_2_eti_perc.sort_values(by="Oui")
display(crossed_14_2_eti_perc)
# plot bar chart
crossed_14_2_eti_perc.plot(kind='bar')
plt.legend(bbox_to_anchor=(1.4, 1))
plt.title("Freins des politiques RSE dans les ETI")
# Export fichier
plt.savefig("crossed_14_2_eti_perc.svg", bbox_inches='tight')
files.download("crossed_14_2_eti_perc.svg")
plt.savefig("crossed_14_2_eti_perc.png", bbox_inches='tight')
files.download("crossed_14_2_eti_perc.png")
| Freins | Oui | Non |
|---|---|---|
| question_14_budget | 120 | 116 |
| question_14_connaissance | 129 | 106 |
| question_14_direction | 96 | 132 |
| question_14_equipe | 161 | 75 |
| question_14_impact | 108 | 43 |
| question_14_long_terme | 139 | 95 |
| question_14_m_management | 163 | 67 |
| question_14_ope | 151 | 86 |
| question_14_temps | 194 | 45 |
| Freins | Oui | Non |
|---|---|---|
| question_14_direction | 42.105263 | 57.894737 |
| question_14_budget | 50.847458 | 49.152542 |
| question_14_connaissance | 54.893617 | 45.106383 |
| question_14_long_terme | 59.401709 | 40.598291 |
| question_14_ope | 63.713080 | 36.286920 |
| question_14_equipe | 68.220339 | 31.779661 |
| question_14_m_management | 70.869565 | 29.130435 |
| question_14_impact | 71.523179 | 28.476821 |
| question_14_temps | 81.171548 | 18.828452 |
# Pour les Grands groupes
crossed_14_2_gg = crossed_14_2.loc[crossed_14_2['categ_taille_entreprises'] == 'Grand groupe']
crossed_14_2_gg = crossed_14_2_gg[['question_14_temps', 'question_14_budget', 'question_14_equipe', 'question_14_connaissance', 'question_14_m_management','question_14_direction', 'question_14_ope', 'question_14_long_terme','question_14_impact']]
# Pivot de la table
crossed_14_2_gg = crossed_14_2_gg.apply(pd.Series.value_counts).fillna(0).astype(int)
crossed_14_2_gg = crossed_14_2_gg.reset_index()
crossed_14_2_gg.rename(columns={'index':'Freins'}, inplace=True)
crossed_14_2_gg = crossed_14_2_gg.pivot_table(columns='Freins')
crossed_14_2_gg = crossed_14_2_gg.drop("Non pertinent", axis=1)
crossed_14_2_gg = crossed_14_2_gg.reindex(["Pas important", "Peu Important", "Important", "Très important"], axis=1)
# Important Y/N
crossed_14_2_gg['Oui'] = crossed_14_2_gg['Important'] + crossed_14_2_gg['Très important']
crossed_14_2_gg['Non'] = crossed_14_2_gg['Pas important'] + crossed_14_2_gg['Peu Important']
crossed_14_2_gg = crossed_14_2_gg[['Oui', 'Non']]
display(crossed_14_2_gg)
# En pourcentage
crossed_14_2_gg_perc = crossed_14_2_gg.div(crossed_14_2_gg.sum(axis=1), axis=0)*100
crossed_14_2_gg_perc = crossed_14_2_gg_perc.sort_values(by="Oui")
display(crossed_14_2_gg_perc)
# plot bar chart
crossed_14_2_gg_perc.plot(kind='bar')
plt.legend(bbox_to_anchor=(1.4, 1))
plt.title("Freins des politiques RSE dans les grands groupes")
# Export fichier
plt.savefig("crossed_14_2_gg_perc.svg", bbox_inches='tight')
files.download("crossed_14_2_gg_perc.svg")
plt.savefig("crossed_14_2_gg_perc.png", bbox_inches='tight')
files.download("crossed_14_2_gg_perc.png")
| Freins | Oui | Non |
|---|---|---|
| question_14_budget | 37 | 15 |
| question_14_connaissance | 31 | 22 |
| question_14_direction | 21 | 30 |
| question_14_equipe | 40 | 13 |
| question_14_impact | 31 | 9 |
| question_14_long_terme | 24 | 26 |
| question_14_m_management | 37 | 16 |
| question_14_ope | 32 | 19 |
| question_14_temps | 42 | 11 |
| Freins | Oui | Non |
|---|---|---|
| question_14_direction | 41.176471 | 58.823529 |
| question_14_long_terme | 48.000000 | 52.000000 |
| question_14_connaissance | 58.490566 | 41.509434 |
| question_14_ope | 62.745098 | 37.254902 |
| question_14_m_management | 69.811321 | 30.188679 |
| question_14_budget | 71.153846 | 28.846154 |
| question_14_equipe | 75.471698 | 24.528302 |
| question_14_impact | 77.500000 | 22.500000 |
| question_14_temps | 79.245283 | 20.754717 |
df_2022['question_36_dons'].value_counts()
Ce n'est pas prévu 358 Nous le faisons déjà 195 Nous réfléchissons à nous engager 130 Name: question_36_dons, dtype: int64
import pandas as pd
# Sélection des colonnes pertinentes pour la question 10
question_36 = df_2022[['question_36_mecenat', 'question_36_collects', 'question_36_mentorat', 'question_36_missions', 'question_36_dons', 'question_36_projet', 'question_36_events', 'question_36_teamB']]
display(question_36.head())
# Pivot de la table
question_36 = question_36.apply(pd.Series.value_counts).fillna(0).astype(int)
# Renommage de la première colonne et pivot
question_36 = question_36.reset_index()
question_36.rename(columns={'index':'Réponse'}, inplace=True)
question_36 = question_36.pivot_table(columns='Réponse')
question_36 = question_36.reindex(["Nous le faisons déjà", "Nous réfléchissons à nous engager", "Ce n'est pas prévu"], axis=1)
question_36
| question_36_mecenat | question_36_collects | question_36_mentorat | question_36_missions | question_36_dons | question_36_projet | question_36_events | question_36_teamB | |
|---|---|---|---|---|---|---|---|---|
| 102 | Ce n'est pas prévu | Nous réfléchissons à nous engager | Ce n'est pas prévu | Ce n'est pas prévu | Ce n'est pas prévu | Ce n'est pas prévu | Nous le faisons déjà | Ce n'est pas prévu |
| 93 | Nous réfléchissons à nous engager | Nous réfléchissons à nous engager | Nous réfléchissons à nous engager | Nous réfléchissons à nous engager | Nous réfléchissons à nous engager | Ce n'est pas prévu | Ce n'est pas prévu | NaN |
| 88 | Nous réfléchissons à nous engager | Nous le faisons déjà | Nous le faisons déjà | Nous réfléchissons à nous engager | Ce n'est pas prévu | Ce n'est pas prévu | Nous le faisons déjà | Nous réfléchissons à nous engager |
| 78 | Nous réfléchissons à nous engager | Nous le faisons déjà | Nous réfléchissons à nous engager | Nous réfléchissons à nous engager | Nous réfléchissons à nous engager | Nous réfléchissons à nous engager | Nous réfléchissons à nous engager | Nous réfléchissons à nous engager |
| 84 | Nous le faisons déjà | Nous réfléchissons à nous engager | Nous le faisons déjà | Nous le faisons déjà | Ce n'est pas prévu | Ce n'est pas prévu | Nous le faisons déjà | Nous le faisons déjà |
| Réponse | Nous le faisons déjà | Nous réfléchissons à nous engager | Ce n'est pas prévu |
|---|---|---|---|
| question_36_collects | 388 | 142 | 178 |
| question_36_dons | 195 | 130 | 358 |
| question_36_events | 350 | 183 | 178 |
| question_36_mecenat | 248 | 218 | 221 |
| question_36_mentorat | 293 | 203 | 199 |
| question_36_missions | 262 | 196 | 224 |
| question_36_projet | 149 | 125 | 373 |
| question_36_teamB | 169 | 241 | 252 |
question_36
| Réponse | Nous le faisons déjà | Nous réfléchissons à nous engager | Ce n'est pas prévu |
|---|---|---|---|
| question_36_collects | 388 | 142 | 178 |
| question_36_dons | 195 | 130 | 358 |
| question_36_events | 350 | 183 | 178 |
| question_36_mecenat | 248 | 218 | 221 |
| question_36_mentorat | 293 | 203 | 199 |
| question_36_missions | 262 | 196 | 224 |
| question_36_projet | 149 | 125 | 373 |
| question_36_teamB | 169 | 241 | 252 |
question_36_perc = question_36.div(question_36.sum(axis=1), axis=0)*100
question_36_perc = question_36_perc.sort_values(by='Nous le faisons déjà', ascending=True)
display(question_36_perc)
question_36_perc.plot(kind='barh', stacked=True)
plt.legend(bbox_to_anchor=(1.05, 1))
plt.title("Principales actions d'engagement ou non chez les collaborateurs")
plt.xlabel("Actions")
plt.ylabel("Pourcentage cumulé")
# Export fichier
#plt.savefig("question_36_perc_2022.svg", bbox_inches='tight')
#files.download("question_36_perc_2022.svg")
#plt.savefig("question_36_perc_2022.png", bbox_inches='tight')
#files.download("question_36_perc_2022.png")
plt.show()
| Réponse | Nous le faisons déjà | Nous réfléchissons à nous engager | Ce n'est pas prévu |
|---|---|---|---|
| question_36_projet | 23.029366 | 19.319938 | 57.650696 |
| question_36_teamB | 25.528701 | 36.404834 | 38.066465 |
| question_36_dons | 28.550512 | 19.033675 | 52.415813 |
| question_36_mecenat | 36.098981 | 31.732169 | 32.168850 |
| question_36_missions | 38.416422 | 28.739003 | 32.844575 |
| question_36_mentorat | 42.158273 | 29.208633 | 28.633094 |
| question_36_events | 49.226442 | 25.738397 | 25.035162 |
| question_36_collects | 54.802260 | 20.056497 | 25.141243 |
df_2022['question_37_aide'].value_counts()
Ce n'est pas prévu 398 Nous menons quelques actions 161 Nous réfléchissons à nous engager 79 C’est un axe clé 32 Name: question_37_aide, dtype: int64
import pandas as pd
# Sélection des colonnes pertinentes pour la question 10
question_37 = df_2022[['question_37_aide', 'question_37_art', 'question_37_education', 'question_37_egalite', 'question_37_emploi', 'question_37_entreprenariat', 'question_37_environnement', 'question_37_handicap', 'question_37_lien', 'question_37_lutte', 'question_37_pauvrete', 'question_37_protection', 'question_37_sante', 'question_37_solidarite']]
display(question_37.head())
# Pivot de la table
question_37 = question_37.apply(pd.Series.value_counts).fillna(0).astype(int)
# Renommage de la première colonne et pivot
question_37 = question_37.reset_index()
question_37.rename(columns={'index':'Réponse'}, inplace=True)
question_37 = question_37.pivot_table(columns='Réponse')
question_37 = question_37.reindex(["C’est un axe clé", "Nous menons quelques actions", "Nous réfléchissons à nous engager", "Ce n'est pas prévu"], axis=1)
display(question_37)
| question_37_aide | question_37_art | question_37_education | question_37_egalite | question_37_emploi | question_37_entreprenariat | question_37_environnement | question_37_handicap | question_37_lien | question_37_lutte | question_37_pauvrete | question_37_protection | question_37_sante | question_37_solidarite | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 102 | Ce n'est pas prévu | Ce n'est pas prévu | Ce n'est pas prévu | NaN | Ce n'est pas prévu | Ce n'est pas prévu | Nous menons quelques actions | Nous menons quelques actions | Ce n'est pas prévu | Ce n'est pas prévu | Ce n'est pas prévu | Ce n'est pas prévu | Ce n'est pas prévu | Ce n'est pas prévu |
| 93 | Ce n'est pas prévu | Nous menons quelques actions | C’est un axe clé | Nous menons quelques actions | Nous menons quelques actions | Ce n'est pas prévu | Nous réfléchissons à nous engager | Nous réfléchissons à nous engager | NaN | Nous réfléchissons à nous engager | Nous réfléchissons à nous engager | Ce n'est pas prévu | Nous réfléchissons à nous engager | Ce n'est pas prévu |
| 88 | Nous menons quelques actions | NaN | Nous menons quelques actions | Nous réfléchissons à nous engager | Nous menons quelques actions | Nous réfléchissons à nous engager | Nous réfléchissons à nous engager | Nous réfléchissons à nous engager | Nous menons quelques actions | Nous réfléchissons à nous engager | Nous réfléchissons à nous engager | Ce n'est pas prévu | Nous menons quelques actions | Ce n'est pas prévu |
| 78 | Nous réfléchissons à nous engager | Nous menons quelques actions | Nous réfléchissons à nous engager | Nous réfléchissons à nous engager | Nous réfléchissons à nous engager | Nous réfléchissons à nous engager | Nous menons quelques actions | Nous réfléchissons à nous engager | Nous réfléchissons à nous engager | Nous réfléchissons à nous engager | Nous réfléchissons à nous engager | Nous réfléchissons à nous engager | Nous réfléchissons à nous engager | Nous réfléchissons à nous engager |
| 84 | Nous réfléchissons à nous engager | Nous réfléchissons à nous engager | Nous réfléchissons à nous engager | Nous réfléchissons à nous engager | C’est un axe clé | Nous réfléchissons à nous engager | Nous réfléchissons à nous engager | C’est un axe clé | Nous réfléchissons à nous engager | C’est un axe clé | Nous réfléchissons à nous engager | Nous réfléchissons à nous engager | Nous réfléchissons à nous engager | C’est un axe clé |
| Réponse | C’est un axe clé | Nous menons quelques actions | Nous réfléchissons à nous engager | Ce n'est pas prévu |
|---|---|---|---|---|
| question_37_aide | 32 | 161 | 79 | 398 |
| question_37_art | 52 | 128 | 68 | 412 |
| question_37_education | 159 | 201 | 142 | 185 |
| question_37_egalite | 137 | 157 | 120 | 254 |
| question_37_emploi | 182 | 215 | 124 | 165 |
| question_37_entreprenariat | 98 | 128 | 122 | 304 |
| question_37_environnement | 245 | 207 | 164 | 111 |
| question_37_handicap | 150 | 194 | 176 | 167 |
| question_37_lien | 57 | 111 | 154 | 335 |
| question_37_lutte | 129 | 179 | 144 | 227 |
| question_37_pauvrete | 95 | 155 | 136 | 275 |
| question_37_protection | 33 | 67 | 101 | 443 |
| question_37_sante | 147 | 189 | 125 | 210 |
| question_37_solidarite | 56 | 169 | 116 | 321 |
display(question_37)
| Réponse | C’est un axe clé | Nous menons quelques actions | Nous réfléchissons à nous engager | Ce n'est pas prévu |
|---|---|---|---|---|
| question_37_aide | 32 | 161 | 79 | 398 |
| question_37_art | 52 | 128 | 68 | 412 |
| question_37_education | 159 | 201 | 142 | 185 |
| question_37_egalite | 137 | 157 | 120 | 254 |
| question_37_emploi | 182 | 215 | 124 | 165 |
| question_37_entreprenariat | 98 | 128 | 122 | 304 |
| question_37_environnement | 245 | 207 | 164 | 111 |
| question_37_handicap | 150 | 194 | 176 | 167 |
| question_37_lien | 57 | 111 | 154 | 335 |
| question_37_lutte | 129 | 179 | 144 | 227 |
| question_37_pauvrete | 95 | 155 | 136 | 275 |
| question_37_protection | 33 | 67 | 101 | 443 |
| question_37_sante | 147 | 189 | 125 | 210 |
| question_37_solidarite | 56 | 169 | 116 | 321 |
question_37_perc = question_37.div(question_37.sum(axis=1), axis=0)*100
question_37_perc = question_37_perc.sort_values(by="C’est un axe clé", ascending=True)
display(question_37_perc)
question_37_perc.plot(kind='barh', stacked=True)
plt.legend(bbox_to_anchor=(1.05, 1))
plt.title("Principales causes soutenues")
plt.xlabel("Causes")
plt.ylabel("Pourcentage cumulé")
# Export fichier
#plt.savefig("question_37_perc_2022.svg", bbox_inches='tight')
#files.download("question_37_perc_2022.svg")
#plt.savefig("question_37_perc_2022.png", bbox_inches='tight')
#files.download("question_37_perc_2022.png")
plt.show()
| Réponse | C’est un axe clé | Nous menons quelques actions | Nous réfléchissons à nous engager | Ce n'est pas prévu |
|---|---|---|---|---|
| question_37_aide | 4.776119 | 24.029851 | 11.791045 | 59.402985 |
| question_37_protection | 5.124224 | 10.403727 | 15.683230 | 68.788820 |
| question_37_art | 7.878788 | 19.393939 | 10.303030 | 62.424242 |
| question_37_solidarite | 8.459215 | 25.528701 | 17.522659 | 48.489426 |
| question_37_lien | 8.675799 | 16.894977 | 23.439878 | 50.989346 |
| question_37_pauvrete | 14.372163 | 23.449319 | 20.574887 | 41.603631 |
| question_37_entreprenariat | 15.030675 | 19.631902 | 18.711656 | 46.625767 |
| question_37_lutte | 18.998527 | 26.362297 | 21.207658 | 33.431517 |
| question_37_egalite | 20.508982 | 23.502994 | 17.964072 | 38.023952 |
| question_37_handicap | 21.834061 | 28.238719 | 25.618632 | 24.308588 |
| question_37_sante | 21.907601 | 28.166915 | 18.628912 | 31.296572 |
| question_37_education | 23.144105 | 29.257642 | 20.669578 | 26.928675 |
| question_37_emploi | 26.530612 | 31.341108 | 18.075802 | 24.052478 |
| question_37_environnement | 33.700138 | 28.473177 | 22.558459 | 15.268226 |
# Tableau croisé 34/2
crossed_34_2 = pd.crosstab(df_2022.categ_taille_entreprises, df_2022["Avez-vous déjà mis en place des *actions d’engagement solidaire *ou de *philanthropie *?"])
crossed_34_2 = crossed_34_2.reindex(["TPE", "PME", "ETI", "Grand groupe"])
crossed_34_2 = crossed_34_2.reindex(["Oui", "Non, mais nous souhaitons nous lancer", "Non, ce n’est pas dans nos projets"], axis=1)
crossed_34_2
| Avez-vous déjà mis en place des *actions d’engagement solidaire *ou de *philanthropie *? | Oui | Non, mais nous souhaitons nous lancer | Non, ce n’est pas dans nos projets |
|---|---|---|---|
| categ_taille_entreprises | |||
| TPE | 75 | 23 | 17 |
| PME | 254 | 51 | 50 |
| ETI | 195 | 20 | 11 |
| Grand groupe | 46 | 2 | 1 |
# Tableau croisé 34/2 en pourcentage
crossed_34_2_perc = pd.crosstab(df_2022.categ_taille_entreprises, df_2022["Avez-vous déjà mis en place des *actions d’engagement solidaire *ou de *philanthropie *?"], normalize='index')*100
crossed_34_2_perc = crossed_34_2_perc.reindex(["TPE", "PME", "ETI", "Grand groupe"])
crossed_34_2_perc = crossed_34_2_perc.reindex(["Oui", "Non, mais nous souhaitons nous lancer", "Non, ce n’est pas dans nos projets"], axis=1)
crossed_34_2_perc
| Avez-vous déjà mis en place des *actions d’engagement solidaire *ou de *philanthropie *? | Oui | Non, mais nous souhaitons nous lancer | Non, ce n’est pas dans nos projets |
|---|---|---|---|
| categ_taille_entreprises | |||
| TPE | 65.217391 | 20.000000 | 14.782609 |
| PME | 71.549296 | 14.366197 | 14.084507 |
| ETI | 86.283186 | 8.849558 | 4.867257 |
| Grand groupe | 93.877551 | 4.081633 | 2.040816 |
import matplotlib.pyplot as plt
# plot grouped bar chart
crossed_34_2_perc.plot.bar(rot=0, stacked=True)
plt.legend(bbox_to_anchor=(1.05, 1))
plt.title("Questions 34&2 : Part d'entreprises ayant déjà mis en place des actions d'engagement solidaire / de philanthropie en fonction de leur taille")
# Export fichier
#plt.savefig("crossed_34_2_perc.svg", bbox_inches='tight')
#files.download("crossed_34_2_perc.svg")
#plt.savefig("crossed_34_2_perc.png", bbox_inches='tight')
#files.download("crossed_34_2_perc.png")
plt.show()
df_2022["Accordez-vous un *crédit de jour d’engagement* à vos collaborateurs pour leur permettre de s’engager sur leur temps de travail ? Si oui, combien de jours par an ?"].value_counts()
Non, ce n’est pas prévu 339 Non, mais nous souhaitons le mettre en place 205 Oui, 1 jour 74 Oui, entre 2 et 3 jours 44 Oui, plus de 3 jours 42 Name: Accordez-vous un *crédit de jour d’engagement* à vos collaborateurs pour leur permettre de s’engager sur leur temps de travail ? Si oui, combien de jours par an ?, dtype: int64
# Tableau croisé 34/2
crossed_35_2 = pd.crosstab(df_2022.categ_taille_entreprises, df_2022["Accordez-vous un *crédit de jour d’engagement* à vos collaborateurs pour leur permettre de s’engager sur leur temps de travail ? Si oui, combien de jours par an ?"])
crossed_35_2 = crossed_35_2.reindex(["TPE", "PME", "ETI", "Grand groupe"])
crossed_35_2 = crossed_35_2.reindex(["Oui, plus de 3 jours", "Oui, entre 2 et 3 jours", "Oui, 1 jour", "Non, mais nous souhaitons le mettre en place", "Non, ce n’est pas prévu"], axis=1)
crossed_35_2
| Accordez-vous un *crédit de jour d’engagement* à vos collaborateurs pour leur permettre de s’engager sur leur temps de travail ? Si oui, combien de jours par an ? | Oui, plus de 3 jours | Oui, entre 2 et 3 jours | Oui, 1 jour | Non, mais nous souhaitons le mettre en place | Non, ce n’est pas prévu |
|---|---|---|---|---|---|
| categ_taille_entreprises | |||||
| TPE | 14 | 8 | 4 | 36 | 46 |
| PME | 19 | 11 | 34 | 88 | 188 |
| ETI | 9 | 22 | 23 | 66 | 92 |
| Grand groupe | 0 | 3 | 13 | 14 | 13 |
# Tableau croisé 34/2 en pourcentage
crossed_35_2_perc = pd.crosstab(df_2022.categ_taille_entreprises, df_2022["Accordez-vous un *crédit de jour d’engagement* à vos collaborateurs pour leur permettre de s’engager sur leur temps de travail ? Si oui, combien de jours par an ?"], normalize='index')*100
crossed_35_2_perc = crossed_35_2_perc.reindex(["TPE", "PME", "ETI", "Grand groupe"])
crossed_35_2_perc = crossed_35_2_perc.reindex(["Oui, plus de 3 jours", "Oui, entre 2 et 3 jours", "Oui, 1 jour", "Non, mais nous souhaitons le mettre en place", "Non, ce n’est pas prévu"], axis=1)
crossed_35_2_perc
| Accordez-vous un *crédit de jour d’engagement* à vos collaborateurs pour leur permettre de s’engager sur leur temps de travail ? Si oui, combien de jours par an ? | Oui, plus de 3 jours | Oui, entre 2 et 3 jours | Oui, 1 jour | Non, mais nous souhaitons le mettre en place | Non, ce n’est pas prévu |
|---|---|---|---|---|---|
| categ_taille_entreprises | |||||
| TPE | 12.962963 | 7.407407 | 3.703704 | 33.333333 | 42.592593 |
| PME | 5.588235 | 3.235294 | 10.000000 | 25.882353 | 55.294118 |
| ETI | 4.245283 | 10.377358 | 10.849057 | 31.132075 | 43.396226 |
| Grand groupe | 0.000000 | 6.976744 | 30.232558 | 32.558140 | 30.232558 |
import matplotlib.pyplot as plt
# plot grouped bar chart
crossed_35_2_perc.plot.bar(rot=0, stacked=True)
plt.legend(bbox_to_anchor=(1.05, 1))
plt.title("Questions 35&2 : Part d'entreprises accordant un crédit de jours d'engagement solidaire à leurs équipes en fonction de leur taille")
# Export fichier
#plt.savefig("crossed_35_2_perc.svg", bbox_inches='tight')
#files.download("crossed_35_2_perc.svg")
#plt.savefig("crossed_35_2_perc.png", bbox_inches='tight')
#files.download("crossed_35_2_perc.png")
plt.show()
crossed_36_2 = df_2022[['categ_taille_entreprises','question_36_mecenat','question_36_collects','question_36_mentorat','question_36_missions','question_36_dons','question_36_projet','question_36_events','question_36_teamB']]
crossed_36_2.head()
| categ_taille_entreprises | question_36_mecenat | question_36_collects | question_36_mentorat | question_36_missions | question_36_dons | question_36_projet | question_36_events | question_36_teamB | |
|---|---|---|---|---|---|---|---|---|---|
| 102 | PME | Ce n'est pas prévu | Nous réfléchissons à nous engager | Ce n'est pas prévu | Ce n'est pas prévu | Ce n'est pas prévu | Ce n'est pas prévu | Nous le faisons déjà | Ce n'est pas prévu |
| 93 | PME | Nous réfléchissons à nous engager | Nous réfléchissons à nous engager | Nous réfléchissons à nous engager | Nous réfléchissons à nous engager | Nous réfléchissons à nous engager | Ce n'est pas prévu | Ce n'est pas prévu | NaN |
| 88 | ETI | Nous réfléchissons à nous engager | Nous le faisons déjà | Nous le faisons déjà | Nous réfléchissons à nous engager | Ce n'est pas prévu | Ce n'est pas prévu | Nous le faisons déjà | Nous réfléchissons à nous engager |
| 78 | TPE | Nous réfléchissons à nous engager | Nous le faisons déjà | Nous réfléchissons à nous engager | Nous réfléchissons à nous engager | Nous réfléchissons à nous engager | Nous réfléchissons à nous engager | Nous réfléchissons à nous engager | Nous réfléchissons à nous engager |
| 84 | TPE | Nous le faisons déjà | Nous réfléchissons à nous engager | Nous le faisons déjà | Nous le faisons déjà | Ce n'est pas prévu | Ce n'est pas prévu | Nous le faisons déjà | Nous le faisons déjà |
# Pour les TPE
crossed_36_2_tpe = crossed_36_2.loc[crossed_36_2['categ_taille_entreprises'] == 'TPE']
crossed_36_2_tpe = crossed_36_2_tpe[['question_36_mecenat','question_36_collects','question_36_mentorat','question_36_missions','question_36_dons','question_36_projet','question_36_events','question_36_teamB']]
# Pivot de la table
crossed_36_2_tpe = crossed_36_2_tpe.apply(pd.Series.value_counts).fillna(0).astype(int)
crossed_36_2_tpe = crossed_36_2_tpe.reset_index()
crossed_36_2_tpe.rename(columns={'index':'Actions'}, inplace=True)
crossed_36_2_tpe = crossed_36_2_tpe.pivot_table(columns='Actions')
crossed_36_2_tpe = crossed_36_2_tpe.reindex(["Nous le faisons déjà", "Nous réfléchissons à nous engager", "Ce n'est pas prévu"], axis=1)
display(crossed_36_2_tpe)
# En pourcentage
crossed_36_2_tpe_perc = crossed_36_2_tpe.div(crossed_36_2_tpe.sum(axis=1), axis=0)*100
crossed_36_2_tpe_perc = crossed_36_2_tpe_perc.sort_values(by="Nous le faisons déjà")
display(crossed_36_2_tpe_perc)
# plot bar chart
crossed_36_2_tpe_perc.plot(kind='bar', stacked=True)
plt.legend(bbox_to_anchor=(1.4, 1))
plt.title("Type d'actions sociétales les plus (ou moins) réalisées dans les TPE")
plt.show()
# Export fichier
#plt.savefig("crossed_36_2_tpe_perc.svg", bbox_inches='tight')
#files.download("crossed_36_2_tpe_perc.svg")
#plt.savefig("crossed_36_2_tpe_perc.png", bbox_inches='tight')
#files.download("crossed_36_2_tpe_perc.png")
| Actions | Nous le faisons déjà | Nous réfléchissons à nous engager | Ce n'est pas prévu |
|---|---|---|---|
| question_36_collects | 25 | 30 | 45 |
| question_36_dons | 27 | 22 | 53 |
| question_36_events | 27 | 35 | 36 |
| question_36_mecenat | 49 | 30 | 25 |
| question_36_mentorat | 47 | 29 | 26 |
| question_36_missions | 38 | 34 | 28 |
| question_36_projet | 11 | 21 | 59 |
| question_36_teamB | 22 | 36 | 41 |
| Actions | Nous le faisons déjà | Nous réfléchissons à nous engager | Ce n'est pas prévu |
|---|---|---|---|
| question_36_projet | 12.087912 | 23.076923 | 64.835165 |
| question_36_teamB | 22.222222 | 36.363636 | 41.414141 |
| question_36_collects | 25.000000 | 30.000000 | 45.000000 |
| question_36_dons | 26.470588 | 21.568627 | 51.960784 |
| question_36_events | 27.551020 | 35.714286 | 36.734694 |
| question_36_missions | 38.000000 | 34.000000 | 28.000000 |
| question_36_mentorat | 46.078431 | 28.431373 | 25.490196 |
| question_36_mecenat | 47.115385 | 28.846154 | 24.038462 |
display(crossed_36_2_tpe_perc)
| Actions | Nous le faisons déjà | Nous réfléchissons à nous engager | Ce n'est pas prévu |
|---|---|---|---|
| question_36_projet | 12.087912 | 23.076923 | 64.835165 |
| question_36_teamB | 22.222222 | 36.363636 | 41.414141 |
| question_36_collects | 25.000000 | 30.000000 | 45.000000 |
| question_36_dons | 26.470588 | 21.568627 | 51.960784 |
| question_36_events | 27.551020 | 35.714286 | 36.734694 |
| question_36_missions | 38.000000 | 34.000000 | 28.000000 |
| question_36_mentorat | 46.078431 | 28.431373 | 25.490196 |
| question_36_mecenat | 47.115385 | 28.846154 | 24.038462 |
# Pour les PME
crossed_36_2_pme = crossed_36_2.loc[crossed_36_2['categ_taille_entreprises'] == 'PME']
crossed_36_2_pme = crossed_36_2_pme[['question_36_mecenat','question_36_collects','question_36_mentorat','question_36_missions','question_36_dons','question_36_projet','question_36_events','question_36_teamB']]
# Pivot de la table
crossed_36_2_pme = crossed_36_2_pme.apply(pd.Series.value_counts).fillna(0).astype(int)
crossed_36_2_pme = crossed_36_2_pme.reset_index()
crossed_36_2_pme.rename(columns={'index':'Actions'}, inplace=True)
crossed_36_2_pme = crossed_36_2_pme.pivot_table(columns='Actions')
crossed_36_2_pme = crossed_36_2_pme.reindex(["Nous le faisons déjà", "Nous réfléchissons à nous engager", "Ce n'est pas prévu"], axis=1)
# En pourcentage
crossed_36_2_pme_perc = crossed_36_2_pme.div(crossed_36_2_pme.sum(axis=1), axis=0)*100
crossed_36_2_pme_perc = crossed_36_2_pme_perc.sort_values(by="Nous le faisons déjà")
display(crossed_36_2_pme_perc)
# plot bar chart
crossed_36_2_pme_perc.plot(kind='bar', stacked=True)
plt.legend(bbox_to_anchor=(1.4, 1))
plt.title("Type d'actions sociétales les plus (ou moins) réalisées dans les PME")
# Export fichier
#plt.savefig("crossed_36_2_pme_perc.svg", bbox_inches='tight')
#files.download("crossed_36_2_pme_perc.svg")
#plt.savefig("crossed_36_2_pme_perc.png", bbox_inches='tight')
#files.download("crossed_36_2_pme_perc.png")
| Actions | Nous le faisons déjà | Nous réfléchissons à nous engager | Ce n'est pas prévu |
|---|---|---|---|
| question_36_projet | 15.112540 | 18.649518 | 66.237942 |
| question_36_teamB | 19.565217 | 38.198758 | 42.236025 |
| question_36_dons | 24.770642 | 18.042813 | 57.186544 |
| question_36_mecenat | 25.835866 | 33.738602 | 40.425532 |
| question_36_missions | 30.513595 | 29.909366 | 39.577039 |
| question_36_mentorat | 33.432836 | 31.641791 | 34.925373 |
| question_36_events | 40.175953 | 29.032258 | 30.791789 |
| question_36_collects | 47.838617 | 23.054755 | 29.106628 |
Text(0.5, 1.0, "Type d'actions sociétales les plus (ou moins) réalisées dans les PME")
display(crossed_36_2_pme)
| Actions | Nous le faisons déjà | Nous réfléchissons à nous engager | Ce n'est pas prévu |
|---|---|---|---|
| question_36_collects | 166 | 80 | 101 |
| question_36_dons | 81 | 59 | 187 |
| question_36_events | 137 | 99 | 105 |
| question_36_mecenat | 85 | 111 | 133 |
| question_36_mentorat | 112 | 106 | 117 |
| question_36_missions | 101 | 99 | 131 |
| question_36_projet | 47 | 58 | 206 |
| question_36_teamB | 63 | 123 | 136 |
# Pour les ETI
crossed_36_2_eti = crossed_36_2.loc[crossed_36_2['categ_taille_entreprises'] == 'ETI']
crossed_36_2_eti = crossed_36_2_eti[['question_36_mecenat','question_36_collects','question_36_mentorat','question_36_missions','question_36_dons','question_36_projet','question_36_events','question_36_teamB']]
# Pivot de la table
crossed_36_2_eti = crossed_36_2_eti.apply(pd.Series.value_counts).fillna(0).astype(int)
crossed_36_2_eti = crossed_36_2_eti.reset_index()
crossed_36_2_eti.rename(columns={'index':'Actions'}, inplace=True)
crossed_36_2_eti = crossed_36_2_eti.pivot_table(columns='Actions')
crossed_36_2_eti = crossed_36_2_eti.reindex(["Nous le faisons déjà", "Nous réfléchissons à nous engager", "Ce n'est pas prévu"], axis=1)
# En pourcentage
crossed_36_2_eti_perc = crossed_36_2_eti.div(crossed_36_2_eti.sum(axis=1), axis=0)*100
crossed_36_2_eti_perc = crossed_36_2_eti_perc.sort_values(by="Nous le faisons déjà")
display(crossed_36_2_eti_perc)
# plot bar chart
crossed_36_2_eti_perc.plot(kind='bar', stacked=True)
plt.legend(bbox_to_anchor=(1.4, 1))
plt.title("Type d'actions sociétales les plus (ou moins) réalisées dans les ETI")
# Export fichier
#plt.savefig("crossed_36_2_eti_perc.svg", bbox_inches='tight')
#files.download("crossed_36_2_eti_perc.svg")
#plt.savefig("crossed_36_2_eti_perc.png", bbox_inches='tight')
#files.download("crossed_36_2_eti_perc.png")
| Actions | Nous le faisons déjà | Nous réfléchissons à nous engager | Ce n'est pas prévu |
|---|---|---|---|
| question_36_teamB | 30.845771 | 35.323383 | 33.830846 |
| question_36_projet | 31.343284 | 20.398010 | 48.258706 |
| question_36_dons | 31.428571 | 20.476190 | 48.095238 |
| question_36_mecenat | 44.230769 | 29.326923 | 26.442308 |
| question_36_missions | 46.859903 | 25.603865 | 27.536232 |
| question_36_mentorat | 49.528302 | 25.471698 | 25.000000 |
| question_36_events | 66.071429 | 18.303571 | 15.625000 |
| question_36_collects | 73.271889 | 12.903226 | 13.824885 |
Text(0.5, 1.0, "Type d'actions sociétales les plus (ou moins) réalisées dans les ETI")
display(crossed_36_2_eti)
| Actions | Nous le faisons déjà | Nous réfléchissons à nous engager | Ce n'est pas prévu |
|---|---|---|---|
| question_36_collects | 159 | 28 | 30 |
| question_36_dons | 66 | 43 | 101 |
| question_36_events | 148 | 41 | 35 |
| question_36_mecenat | 92 | 61 | 55 |
| question_36_mentorat | 105 | 54 | 53 |
| question_36_missions | 97 | 53 | 57 |
| question_36_projet | 63 | 41 | 97 |
| question_36_teamB | 62 | 71 | 68 |
# Pour les GG
crossed_36_2_gg = crossed_36_2.loc[crossed_36_2['categ_taille_entreprises'] == 'Grand groupe']
crossed_36_2_gg = crossed_36_2_gg[['question_36_mecenat','question_36_collects','question_36_mentorat','question_36_missions','question_36_dons','question_36_projet','question_36_events','question_36_teamB']]
# Pivot de la table
crossed_36_2_gg = crossed_36_2_gg.apply(pd.Series.value_counts).fillna(0).astype(int)
crossed_36_2_gg = crossed_36_2_gg.reset_index()
crossed_36_2_gg.rename(columns={'index':'Actions'}, inplace=True)
crossed_36_2_gg = crossed_36_2_gg.pivot_table(columns='Actions')
crossed_36_2_gg = crossed_36_2_gg.reindex(["Nous le faisons déjà", "Nous réfléchissons à nous engager", "Ce n'est pas prévu"], axis=1)
# En pourcentage
crossed_36_2_gg_perc = crossed_36_2_gg.div(crossed_36_2_gg.sum(axis=1), axis=0)*100
crossed_36_2_gg_perc = crossed_36_2_gg_perc.sort_values(by="Nous le faisons déjà")
display(crossed_36_2_gg_perc)
# plot bar chart
crossed_36_2_gg_perc.plot(kind='bar', stacked=True)
plt.legend(bbox_to_anchor=(1.4, 1))
plt.title("Type d'actions sociétales les plus (ou moins) réalisées dans les Grands groupes")
# Export fichier
#plt.savefig("crossed_36_2_gg_perc.svg", bbox_inches='tight')
#files.download("crossed_36_2_gg_perc.svg")
#plt.savefig("crossed_36_2_gg_perc.png", bbox_inches='tight')
#files.download("crossed_36_2_gg_perc.png")
| Actions | Nous le faisons déjà | Nous réfléchissons à nous engager | Ce n'est pas prévu |
|---|---|---|---|
| question_36_dons | 47.727273 | 13.636364 | 38.636364 |
| question_36_mecenat | 47.826087 | 34.782609 | 17.391304 |
| question_36_teamB | 55.000000 | 27.500000 | 17.500000 |
| question_36_missions | 59.090909 | 22.727273 | 18.181818 |
| question_36_mentorat | 63.043478 | 30.434783 | 6.521739 |
| question_36_projet | 63.636364 | 11.363636 | 25.000000 |
| question_36_events | 79.166667 | 16.666667 | 4.166667 |
| question_36_collects | 86.363636 | 9.090909 | 4.545455 |
Text(0.5, 1.0, "Type d'actions sociétales les plus (ou moins) réalisées dans les Grands groupes")
display(crossed_36_2_gg)
| Actions | Nous le faisons déjà | Nous réfléchissons à nous engager | Ce n'est pas prévu |
|---|---|---|---|
| question_36_collects | 38 | 4 | 2 |
| question_36_dons | 21 | 6 | 17 |
| question_36_events | 38 | 8 | 2 |
| question_36_mecenat | 22 | 16 | 8 |
| question_36_mentorat | 29 | 14 | 3 |
| question_36_missions | 26 | 10 | 8 |
| question_36_projet | 28 | 5 | 11 |
| question_36_teamB | 22 | 11 | 7 |
mecenat_taille_ent = df_2022[['categ_taille_entreprises', 'question_36_mecenat']]
mecenat_taille_ent.head()
| categ_taille_entreprises | question_36_mecenat | |
|---|---|---|
| 102 | PME | Ce n'est pas prévu |
| 93 | PME | Nous réfléchissons à nous engager |
| 88 | ETI | Nous réfléchissons à nous engager |
| 78 | TPE | Nous réfléchissons à nous engager |
| 84 | TPE | Nous le faisons déjà |
# Tableau croisé 36.1/2
mecenat_taille_ent = pd.crosstab(df_2022.categ_taille_entreprises, df_2022.question_36_mecenat)
mecenat_taille_ent = mecenat_taille_ent.reindex(["TPE", "PME", "ETI", "Grand groupe"])
mecenat_taille_ent = mecenat_taille_ent.reindex(["Nous le faisons déjà", "Nous réfléchissons à nous engager", "Ce n'est pas prévu"], axis=1)
mecenat_taille_ent
# En pourcentage
mecenat_taille_ent_perc = mecenat_taille_ent.div(mecenat_taille_ent.sum(axis=1), axis=0)*100
mecenat_taille_ent_perc = mecenat_taille_ent_perc.reindex(["TPE", "PME", "ETI", "Grand groupe"])
display(mecenat_taille_ent_perc)
# plot bar chart
mecenat_taille_ent_perc.plot(kind='bar', stacked=True)
plt.legend(bbox_to_anchor=(1.4, 1))
plt.title("Degré d'avancement des entreprises répondantes sur le mécénat de compétences en fonction de leur taille")
| question_36_mecenat | Nous le faisons déjà | Nous réfléchissons à nous engager | Ce n'est pas prévu |
|---|---|---|---|
| categ_taille_entreprises | |||
| TPE | 47.115385 | 28.846154 | 24.038462 |
| PME | 25.835866 | 33.738602 | 40.425532 |
| ETI | 44.230769 | 29.326923 | 26.442308 |
| Grand groupe | 47.826087 | 34.782609 | 17.391304 |
Text(0.5, 1.0, "Degré d'avancement des entreprises répondantes sur le mécénat de compétences en fonction de leur taille")
mecenat_taille_ent
| question_36_mecenat | Nous le faisons déjà | Nous réfléchissons à nous engager | Ce n'est pas prévu |
|---|---|---|---|
| categ_taille_entreprises | |||
| TPE | 49 | 30 | 25 |
| PME | 85 | 111 | 133 |
| ETI | 92 | 61 | 55 |
| Grand groupe | 22 | 16 | 8 |
collect_taille_ent = df_2022[['categ_taille_entreprises', 'question_36_collects']]
collect_taille_ent.head()
| categ_taille_entreprises | question_36_collects | |
|---|---|---|
| 102 | PME | Nous réfléchissons à nous engager |
| 93 | PME | Nous réfléchissons à nous engager |
| 88 | ETI | Nous le faisons déjà |
| 78 | TPE | Nous le faisons déjà |
| 84 | TPE | Nous réfléchissons à nous engager |
# Tableau croisé 36.2/2
collect_taille_ent = pd.crosstab(df_2022.categ_taille_entreprises, df_2022.question_36_collects)
collect_taille_ent = collect_taille_ent.reindex(["TPE", "PME", "ETI", "Grand groupe"])
collect_taille_ent = collect_taille_ent.reindex(["Nous le faisons déjà", "Nous réfléchissons à nous engager", "Ce n'est pas prévu"], axis=1)
collect_taille_ent
# En pourcentage
collect_taille_ent_perc = collect_taille_ent.div(collect_taille_ent.sum(axis=1), axis=0)*100
collect_taille_ent_perc = collect_taille_ent_perc.reindex(["TPE", "PME", "ETI", "Grand groupe"])
display(collect_taille_ent_perc)
# plot bar chart
collect_taille_ent_perc.plot(kind='bar', stacked=True)
plt.legend(bbox_to_anchor=(1.4, 1))
plt.title("Degré d'avancement des entreprises répondantes sur les collectes de matériel ou produits en fonction de leur taille")
| question_36_collects | Nous le faisons déjà | Nous réfléchissons à nous engager | Ce n'est pas prévu |
|---|---|---|---|
| categ_taille_entreprises | |||
| TPE | 25.000000 | 30.000000 | 45.000000 |
| PME | 47.838617 | 23.054755 | 29.106628 |
| ETI | 73.271889 | 12.903226 | 13.824885 |
| Grand groupe | 86.363636 | 9.090909 | 4.545455 |
Text(0.5, 1.0, "Degré d'avancement des entreprises répondantes sur les collectes de matériel ou produits en fonction de leur taille")
collect_taille_ent
| question_36_collects | Nous le faisons déjà | Nous réfléchissons à nous engager | Ce n'est pas prévu |
|---|---|---|---|
| categ_taille_entreprises | |||
| TPE | 25 | 30 | 45 |
| PME | 166 | 80 | 101 |
| ETI | 159 | 28 | 30 |
| Grand groupe | 38 | 4 | 2 |
mentorat_taille_ent = df_2022[['categ_taille_entreprises', 'question_36_mentorat']]
mentorat_taille_ent.head()
| categ_taille_entreprises | question_36_mentorat | |
|---|---|---|
| 102 | PME | Ce n'est pas prévu |
| 93 | PME | Nous réfléchissons à nous engager |
| 88 | ETI | Nous le faisons déjà |
| 78 | TPE | Nous réfléchissons à nous engager |
| 84 | TPE | Nous le faisons déjà |
# Tableau croisé 36.3/2
mentorat_taille_ent = pd.crosstab(df_2022.categ_taille_entreprises, df_2022.question_36_mentorat)
mentorat_taille_ent = mentorat_taille_ent.reindex(["TPE", "PME", "ETI", "Grand groupe"])
mentorat_taille_ent = mentorat_taille_ent.reindex(["Nous le faisons déjà", "Nous réfléchissons à nous engager", "Ce n'est pas prévu"], axis=1)
mentorat_taille_ent
# En pourcentage
mentorat_taille_ent_perc = mentorat_taille_ent.div(mentorat_taille_ent.sum(axis=1), axis=0)*100
mentorat_taille_ent_perc = mentorat_taille_ent_perc.reindex(["TPE", "PME", "ETI", "Grand groupe"])
display(mentorat_taille_ent_perc)
# plot bar chart
mentorat_taille_ent_perc.plot(kind='bar', stacked=True)
plt.legend(bbox_to_anchor=(1.4, 1))
plt.title("Degré d'avancement des entreprises répondantes sur le mentorat en fonction de leur taille")
| question_36_mentorat | Nous le faisons déjà | Nous réfléchissons à nous engager | Ce n'est pas prévu |
|---|---|---|---|
| categ_taille_entreprises | |||
| TPE | 46.078431 | 28.431373 | 25.490196 |
| PME | 33.432836 | 31.641791 | 34.925373 |
| ETI | 49.528302 | 25.471698 | 25.000000 |
| Grand groupe | 63.043478 | 30.434783 | 6.521739 |
Text(0.5, 1.0, "Degré d'avancement des entreprises répondantes sur le mentorat en fonction de leur taille")
mentorat_taille_ent
| question_36_mentorat | Nous le faisons déjà | Nous réfléchissons à nous engager | Ce n'est pas prévu |
|---|---|---|---|
| categ_taille_entreprises | |||
| TPE | 47 | 29 | 26 |
| PME | 112 | 106 | 117 |
| ETI | 105 | 54 | 53 |
| Grand groupe | 29 | 14 | 3 |
missions_taille_ent = df_2022[['categ_taille_entreprises', 'question_36_missions']]
missions_taille_ent.head()
# Tableau croisé 36.4/2
missions_taille_ent = pd.crosstab(df_2022.categ_taille_entreprises, df_2022.question_36_missions)
missions_taille_ent = missions_taille_ent.reindex(["TPE", "PME", "ETI", "Grand groupe"])
missions_taille_ent = missions_taille_ent.reindex(["Nous le faisons déjà", "Nous réfléchissons à nous engager", "Ce n'est pas prévu"], axis=1)
# En pourcentage
missions_taille_ent_perc = missions_taille_ent.div(missions_taille_ent.sum(axis=1), axis=0)*100
missions_taille_ent_perc = missions_taille_ent_perc.reindex(["TPE", "PME", "ETI", "Grand groupe"])
display(missions_taille_ent_perc)
# plot bar chart
missions_taille_ent_perc.plot(kind='bar', stacked=True)
plt.legend(bbox_to_anchor=(1.4, 1))
plt.title("Degré d'avancement des entreprises répondantes sur les missions coup de pouce en association en fonction de leur taille")
| question_36_missions | Nous le faisons déjà | Nous réfléchissons à nous engager | Ce n'est pas prévu |
|---|---|---|---|
| categ_taille_entreprises | |||
| TPE | 38.000000 | 34.000000 | 28.000000 |
| PME | 30.513595 | 29.909366 | 39.577039 |
| ETI | 46.859903 | 25.603865 | 27.536232 |
| Grand groupe | 59.090909 | 22.727273 | 18.181818 |
Text(0.5, 1.0, "Degré d'avancement des entreprises répondantes sur les missions coup de pouce en association en fonction de leur taille")
missions_taille_ent
| question_36_missions | Nous le faisons déjà | Nous réfléchissons à nous engager | Ce n'est pas prévu |
|---|---|---|---|
| categ_taille_entreprises | |||
| TPE | 38 | 34 | 28 |
| PME | 101 | 99 | 131 |
| ETI | 97 | 53 | 57 |
| Grand groupe | 26 | 10 | 8 |
dons_taille_ent = df_2022[['categ_taille_entreprises', 'question_36_dons']]
dons_taille_ent.head()
# Tableau croisé 36.5/2
dons_taille_ent = pd.crosstab(df_2022.categ_taille_entreprises, df_2022.question_36_dons)
dons_taille_ent = dons_taille_ent.reindex(["TPE", "PME", "ETI", "Grand groupe"])
dons_taille_ent = dons_taille_ent.reindex(["Nous le faisons déjà", "Nous réfléchissons à nous engager", "Ce n'est pas prévu"], axis=1)
# En pourcentage
dons_taille_ent_perc = dons_taille_ent.div(dons_taille_ent.sum(axis=1), axis=0)*100
dons_taille_ent_perc = dons_taille_ent_perc.reindex(["TPE", "PME", "ETI", "Grand groupe"])
display(dons_taille_ent_perc)
# plot bar chart
dons_taille_ent_perc.plot(kind='bar', stacked=True)
plt.legend(bbox_to_anchor=(1.4, 1))
plt.title("Degré d'avancement des entreprises répondantes sur les dons financiers et arrondi sur salaire en fonction de leur taille")
| question_36_dons | Nous le faisons déjà | Nous réfléchissons à nous engager | Ce n'est pas prévu |
|---|---|---|---|
| categ_taille_entreprises | |||
| TPE | 26.470588 | 21.568627 | 51.960784 |
| PME | 24.770642 | 18.042813 | 57.186544 |
| ETI | 31.428571 | 20.476190 | 48.095238 |
| Grand groupe | 47.727273 | 13.636364 | 38.636364 |
Text(0.5, 1.0, "Degré d'avancement des entreprises répondantes sur les dons financiers et arrondi sur salaire en fonction de leur taille")
dons_taille_ent
| question_36_dons | Nous le faisons déjà | Nous réfléchissons à nous engager | Ce n'est pas prévu |
|---|---|---|---|
| categ_taille_entreprises | |||
| TPE | 27 | 22 | 53 |
| PME | 81 | 59 | 187 |
| ETI | 66 | 43 | 101 |
| Grand groupe | 21 | 6 | 17 |
projet_taille_ent = df_2022[['categ_taille_entreprises', 'question_36_projet']]
projet_taille_ent.head()
# Tableau croisé 36.6/2
projet_taille_ent = pd.crosstab(df_2022.categ_taille_entreprises, df_2022.question_36_projet)
projet_taille_ent = projet_taille_ent.reindex(["TPE", "PME", "ETI", "Grand groupe"])
projet_taille_ent = projet_taille_ent.reindex(["Nous le faisons déjà", "Nous réfléchissons à nous engager", "Ce n'est pas prévu"], axis=1)
# En pourcentage
projet_taille_ent_perc = projet_taille_ent.div(projet_taille_ent.sum(axis=1), axis=0)*100
projet_taille_ent_perc = projet_taille_ent_perc.reindex(["TPE", "PME", "ETI", "Grand groupe"])
display(projet_taille_ent_perc)
# plot bar chart
projet_taille_ent_perc.plot(kind='bar', stacked=True)
plt.legend(bbox_to_anchor=(1.4, 1))
plt.title("Degré d'avancement des entreprises répondantes sur les appels à projets en fonction de leur taille")
| question_36_projet | Nous le faisons déjà | Nous réfléchissons à nous engager | Ce n'est pas prévu |
|---|---|---|---|
| categ_taille_entreprises | |||
| TPE | 12.087912 | 23.076923 | 64.835165 |
| PME | 15.112540 | 18.649518 | 66.237942 |
| ETI | 31.343284 | 20.398010 | 48.258706 |
| Grand groupe | 63.636364 | 11.363636 | 25.000000 |
Text(0.5, 1.0, "Degré d'avancement des entreprises répondantes sur les appels à projets en fonction de leur taille")
projet_taille_ent
| question_36_projet | Nous le faisons déjà | Nous réfléchissons à nous engager | Ce n'est pas prévu |
|---|---|---|---|
| categ_taille_entreprises | |||
| TPE | 11 | 21 | 59 |
| PME | 47 | 58 | 206 |
| ETI | 63 | 41 | 97 |
| Grand groupe | 28 | 5 | 11 |
event_taille_ent = df_2022[['categ_taille_entreprises', 'question_36_events']]
event_taille_ent.head()
# Tableau croisé 36.7/2
event_taille_ent = pd.crosstab(df_2022.categ_taille_entreprises, df_2022.question_36_events)
event_taille_ent = event_taille_ent.reindex(["TPE", "PME", "ETI", "Grand groupe"])
event_taille_ent = event_taille_ent.reindex(["Nous le faisons déjà", "Nous réfléchissons à nous engager", "Ce n'est pas prévu"], axis=1)
# En pourcentage
event_taille_ent_perc = event_taille_ent.div(event_taille_ent.sum(axis=1), axis=0)*100
event_taille_ent_perc = event_taille_ent_perc.reindex(["TPE", "PME", "ETI", "Grand groupe"])
display(event_taille_ent_perc)
# plot bar chart
event_taille_ent_perc.plot(kind='bar', stacked=True)
plt.legend(bbox_to_anchor=(1.4, 1))
plt.title("Degré d'avancement des entreprises répondantes sur les événements caritatifs en fonction de leur taille")
| question_36_events | Nous le faisons déjà | Nous réfléchissons à nous engager | Ce n'est pas prévu |
|---|---|---|---|
| categ_taille_entreprises | |||
| TPE | 27.551020 | 35.714286 | 36.734694 |
| PME | 40.175953 | 29.032258 | 30.791789 |
| ETI | 66.071429 | 18.303571 | 15.625000 |
| Grand groupe | 79.166667 | 16.666667 | 4.166667 |
Text(0.5, 1.0, "Degré d'avancement des entreprises répondantes sur les événements caritatifs en fonction de leur taille")
event_taille_ent
| question_36_events | Nous le faisons déjà | Nous réfléchissons à nous engager | Ce n'est pas prévu |
|---|---|---|---|
| categ_taille_entreprises | |||
| TPE | 27 | 35 | 36 |
| PME | 137 | 99 | 105 |
| ETI | 148 | 41 | 35 |
| Grand groupe | 38 | 8 | 2 |
teamb_taille_ent = df_2022[['categ_taille_entreprises', 'question_36_teamB']]
teamb_taille_ent.head()
# Tableau croisé 36.8/2
teamb_taille_ent = pd.crosstab(df_2022.categ_taille_entreprises, df_2022.question_36_teamB)
teamb_taille_ent = teamb_taille_ent.reindex(["TPE", "PME", "ETI", "Grand groupe"])
teamb_taille_ent = teamb_taille_ent.reindex(["Nous le faisons déjà", "Nous réfléchissons à nous engager", "Ce n'est pas prévu"], axis=1)
# En pourcentage
teamb_taille_ent_perc = teamb_taille_ent.div(teamb_taille_ent.sum(axis=1), axis=0)*100
teamb_taille_ent_perc = teamb_taille_ent_perc.reindex(["TPE", "PME", "ETI", "Grand groupe"])
display(teamb_taille_ent_perc)
# plot bar chart
teamb_taille_ent_perc.plot(kind='bar', stacked=True)
plt.legend(bbox_to_anchor=(1.4, 1))
plt.title("Degré d'avancement des entreprises répondantes sur les team-buidling solidaires en fonction de leur taille")
| question_36_teamB | Nous le faisons déjà | Nous réfléchissons à nous engager | Ce n'est pas prévu |
|---|---|---|---|
| categ_taille_entreprises | |||
| TPE | 22.222222 | 36.363636 | 41.414141 |
| PME | 19.565217 | 38.198758 | 42.236025 |
| ETI | 30.845771 | 35.323383 | 33.830846 |
| Grand groupe | 55.000000 | 27.500000 | 17.500000 |
Text(0.5, 1.0, "Degré d'avancement des entreprises répondantes sur les team-buidling solidaires en fonction de leur taille")
teamb_taille_ent
| question_36_teamB | Nous le faisons déjà | Nous réfléchissons à nous engager | Ce n'est pas prévu |
|---|---|---|---|
| categ_taille_entreprises | |||
| TPE | 22 | 36 | 41 |
| PME | 63 | 123 | 136 |
| ETI | 62 | 71 | 68 |
| Grand groupe | 22 | 11 | 7 |
crossed_37_2 = df_2022[["categ_taille_entreprises", 'question_37_aide', 'question_37_art', 'question_37_education', 'question_37_egalite', 'question_37_emploi', 'question_37_entreprenariat', 'question_37_environnement', 'question_37_handicap', 'question_37_lien', 'question_37_lutte', 'question_37_pauvrete', 'question_37_protection', 'question_37_sante', 'question_37_solidarite']]
crossed_37_2.head()
| categ_taille_entreprises | question_37_aide | question_37_art | question_37_education | question_37_egalite | question_37_emploi | question_37_entreprenariat | question_37_environnement | question_37_handicap | question_37_lien | question_37_lutte | question_37_pauvrete | question_37_protection | question_37_sante | question_37_solidarite | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 102 | PME | Ce n'est pas prévu | Ce n'est pas prévu | Ce n'est pas prévu | NaN | Ce n'est pas prévu | Ce n'est pas prévu | Nous menons quelques actions | Nous menons quelques actions | Ce n'est pas prévu | Ce n'est pas prévu | Ce n'est pas prévu | Ce n'est pas prévu | Ce n'est pas prévu | Ce n'est pas prévu |
| 93 | PME | Ce n'est pas prévu | Nous menons quelques actions | C’est un axe clé | Nous menons quelques actions | Nous menons quelques actions | Ce n'est pas prévu | Nous réfléchissons à nous engager | Nous réfléchissons à nous engager | NaN | Nous réfléchissons à nous engager | Nous réfléchissons à nous engager | Ce n'est pas prévu | Nous réfléchissons à nous engager | Ce n'est pas prévu |
| 88 | ETI | Nous menons quelques actions | NaN | Nous menons quelques actions | Nous réfléchissons à nous engager | Nous menons quelques actions | Nous réfléchissons à nous engager | Nous réfléchissons à nous engager | Nous réfléchissons à nous engager | Nous menons quelques actions | Nous réfléchissons à nous engager | Nous réfléchissons à nous engager | Ce n'est pas prévu | Nous menons quelques actions | Ce n'est pas prévu |
| 78 | TPE | Nous réfléchissons à nous engager | Nous menons quelques actions | Nous réfléchissons à nous engager | Nous réfléchissons à nous engager | Nous réfléchissons à nous engager | Nous réfléchissons à nous engager | Nous menons quelques actions | Nous réfléchissons à nous engager | Nous réfléchissons à nous engager | Nous réfléchissons à nous engager | Nous réfléchissons à nous engager | Nous réfléchissons à nous engager | Nous réfléchissons à nous engager | Nous réfléchissons à nous engager |
| 84 | TPE | Nous réfléchissons à nous engager | Nous réfléchissons à nous engager | Nous réfléchissons à nous engager | Nous réfléchissons à nous engager | C’est un axe clé | Nous réfléchissons à nous engager | Nous réfléchissons à nous engager | C’est un axe clé | Nous réfléchissons à nous engager | C’est un axe clé | Nous réfléchissons à nous engager | Nous réfléchissons à nous engager | Nous réfléchissons à nous engager | C’est un axe clé |
# Pour les TPE
crossed_37_2_tpe = crossed_37_2.loc[crossed_37_2['categ_taille_entreprises'] == 'TPE']
crossed_37_2_tpe = crossed_37_2_tpe[['question_37_aide', 'question_37_art', 'question_37_education', 'question_37_egalite', 'question_37_emploi', 'question_37_entreprenariat', 'question_37_environnement', 'question_37_handicap', 'question_37_lien', 'question_37_lutte', 'question_37_pauvrete', 'question_37_protection', 'question_37_sante', 'question_37_solidarite']]
# Pivot de la table
crossed_37_2_tpe = crossed_37_2_tpe.apply(pd.Series.value_counts).fillna(0).astype(int)
crossed_37_2_tpe = crossed_37_2_tpe.reset_index()
crossed_37_2_tpe.rename(columns={'index':'Actions'}, inplace=True)
crossed_37_2_tpe = crossed_37_2_tpe.pivot_table(columns='Actions')
crossed_37_2_tpe = crossed_37_2_tpe.reindex(["C’est un axe clé", "Nous menons quelques actions", "Nous réfléchissons à nous engager", "Ce n'est pas prévu"], axis=1)
display(crossed_37_2_tpe)
# En pourcentage
crossed_37_2_tpe_perc = crossed_37_2_tpe.div(crossed_37_2_tpe.sum(axis=1), axis=0)*100
crossed_37_2_tpe_perc = crossed_37_2_tpe_perc.sort_values(by="C’est un axe clé")
display(crossed_37_2_tpe_perc)
# plot bar chart
crossed_37_2_tpe_perc.plot(kind='bar', stacked=True)
plt.legend(bbox_to_anchor=(1.4, 1))
plt.title("Thématiques d'engagement les plus plébiscitées dans les TPE")
plt.show()
| Actions | C’est un axe clé | Nous menons quelques actions | Nous réfléchissons à nous engager | Ce n'est pas prévu |
|---|---|---|---|---|
| question_37_aide | 4 | 13 | 16 | 65 |
| question_37_art | 6 | 20 | 24 | 47 |
| question_37_education | 23 | 23 | 29 | 27 |
| question_37_egalite | 23 | 12 | 21 | 42 |
| question_37_emploi | 27 | 27 | 21 | 27 |
| question_37_entreprenariat | 24 | 23 | 26 | 24 |
| question_37_environnement | 40 | 34 | 27 | 10 |
| question_37_handicap | 19 | 17 | 32 | 32 |
| question_37_lien | 16 | 10 | 28 | 43 |
| question_37_lutte | 26 | 20 | 23 | 32 |
| question_37_pauvrete | 13 | 18 | 22 | 44 |
| question_37_protection | 8 | 12 | 16 | 61 |
| question_37_sante | 20 | 19 | 21 | 40 |
| question_37_solidarite | 9 | 15 | 21 | 53 |
| Actions | C’est un axe clé | Nous menons quelques actions | Nous réfléchissons à nous engager | Ce n'est pas prévu |
|---|---|---|---|---|
| question_37_aide | 4.081633 | 13.265306 | 16.326531 | 66.326531 |
| question_37_art | 6.185567 | 20.618557 | 24.742268 | 48.453608 |
| question_37_protection | 8.247423 | 12.371134 | 16.494845 | 62.886598 |
| question_37_solidarite | 9.183673 | 15.306122 | 21.428571 | 54.081633 |
| question_37_pauvrete | 13.402062 | 18.556701 | 22.680412 | 45.360825 |
| question_37_lien | 16.494845 | 10.309278 | 28.865979 | 44.329897 |
| question_37_handicap | 19.000000 | 17.000000 | 32.000000 | 32.000000 |
| question_37_sante | 20.000000 | 19.000000 | 21.000000 | 40.000000 |
| question_37_education | 22.549020 | 22.549020 | 28.431373 | 26.470588 |
| question_37_egalite | 23.469388 | 12.244898 | 21.428571 | 42.857143 |
| question_37_entreprenariat | 24.742268 | 23.711340 | 26.804124 | 24.742268 |
| question_37_lutte | 25.742574 | 19.801980 | 22.772277 | 31.683168 |
| question_37_emploi | 26.470588 | 26.470588 | 20.588235 | 26.470588 |
| question_37_environnement | 36.036036 | 30.630631 | 24.324324 | 9.009009 |
display(crossed_37_2_tpe_perc)
| Actions | C’est un axe clé | Nous menons quelques actions | Nous réfléchissons à nous engager | Ce n'est pas prévu |
|---|---|---|---|---|
| question_37_aide | 4.081633 | 13.265306 | 16.326531 | 66.326531 |
| question_37_art | 6.185567 | 20.618557 | 24.742268 | 48.453608 |
| question_37_protection | 8.247423 | 12.371134 | 16.494845 | 62.886598 |
| question_37_solidarite | 9.183673 | 15.306122 | 21.428571 | 54.081633 |
| question_37_pauvrete | 13.402062 | 18.556701 | 22.680412 | 45.360825 |
| question_37_lien | 16.494845 | 10.309278 | 28.865979 | 44.329897 |
| question_37_handicap | 19.000000 | 17.000000 | 32.000000 | 32.000000 |
| question_37_sante | 20.000000 | 19.000000 | 21.000000 | 40.000000 |
| question_37_education | 22.549020 | 22.549020 | 28.431373 | 26.470588 |
| question_37_egalite | 23.469388 | 12.244898 | 21.428571 | 42.857143 |
| question_37_entreprenariat | 24.742268 | 23.711340 | 26.804124 | 24.742268 |
| question_37_lutte | 25.742574 | 19.801980 | 22.772277 | 31.683168 |
| question_37_emploi | 26.470588 | 26.470588 | 20.588235 | 26.470588 |
| question_37_environnement | 36.036036 | 30.630631 | 24.324324 | 9.009009 |
# Pour les PME
crossed_37_2_pme = crossed_37_2.loc[crossed_37_2['categ_taille_entreprises'] == 'PME']
crossed_37_2_pme = crossed_37_2_pme[['question_37_aide', 'question_37_art', 'question_37_education', 'question_37_egalite', 'question_37_emploi', 'question_37_entreprenariat', 'question_37_environnement', 'question_37_handicap', 'question_37_lien', 'question_37_lutte', 'question_37_pauvrete', 'question_37_protection', 'question_37_sante', 'question_37_solidarite']]
# Pivot de la table
crossed_37_2_pme = crossed_37_2_pme.apply(pd.Series.value_counts).fillna(0).astype(int)
crossed_37_2_pme = crossed_37_2_pme.reset_index()
crossed_37_2_pme.rename(columns={'index':'Actions'}, inplace=True)
crossed_37_2_pme = crossed_37_2_pme.pivot_table(columns='Actions')
crossed_37_2_pme = crossed_37_2_pme.reindex(["C’est un axe clé", "Nous menons quelques actions", "Nous réfléchissons à nous engager", "Ce n'est pas prévu"], axis=1)
display(crossed_37_2_pme)
# En pourcentage
crossed_37_2_pme_perc = crossed_37_2_pme.div(crossed_37_2_pme.sum(axis=1), axis=0)*100
crossed_37_2_pme_perc = crossed_37_2_pme_perc.sort_values(by="C’est un axe clé")
display(crossed_37_2_pme_perc)
# plot bar chart
crossed_37_2_pme_perc.plot(kind='bar', stacked=True)
plt.legend(bbox_to_anchor=(1.4, 1))
plt.title("Thématiques d'engagement les plus plébiscitées dans les PME")
plt.show()
| Actions | C’est un axe clé | Nous menons quelques actions | Nous réfléchissons à nous engager | Ce n'est pas prévu |
|---|---|---|---|---|
| question_37_aide | 11 | 60 | 49 | 200 |
| question_37_art | 21 | 52 | 30 | 214 |
| question_37_education | 54 | 91 | 72 | 111 |
| question_37_egalite | 49 | 71 | 64 | 135 |
| question_37_emploi | 63 | 98 | 70 | 101 |
| question_37_entreprenariat | 37 | 48 | 59 | 171 |
| question_37_environnement | 105 | 94 | 84 | 66 |
| question_37_handicap | 40 | 80 | 99 | 107 |
| question_37_lien | 20 | 49 | 74 | 182 |
| question_37_lutte | 49 | 74 | 76 | 135 |
| question_37_pauvrete | 36 | 65 | 68 | 150 |
| question_37_protection | 14 | 30 | 56 | 209 |
| question_37_sante | 54 | 71 | 72 | 127 |
| question_37_solidarite | 18 | 63 | 60 | 176 |
| Actions | C’est un axe clé | Nous menons quelques actions | Nous réfléchissons à nous engager | Ce n'est pas prévu |
|---|---|---|---|---|
| question_37_aide | 3.437500 | 18.750000 | 15.312500 | 62.500000 |
| question_37_protection | 4.530744 | 9.708738 | 18.122977 | 67.637540 |
| question_37_solidarite | 5.678233 | 19.873817 | 18.927445 | 55.520505 |
| question_37_lien | 6.153846 | 15.076923 | 22.769231 | 56.000000 |
| question_37_art | 6.624606 | 16.403785 | 9.463722 | 67.507886 |
| question_37_pauvrete | 11.285266 | 20.376176 | 21.316614 | 47.021944 |
| question_37_entreprenariat | 11.746032 | 15.238095 | 18.730159 | 54.285714 |
| question_37_handicap | 12.269939 | 24.539877 | 30.368098 | 32.822086 |
| question_37_lutte | 14.670659 | 22.155689 | 22.754491 | 40.419162 |
| question_37_egalite | 15.360502 | 22.257053 | 20.062696 | 42.319749 |
| question_37_education | 16.463415 | 27.743902 | 21.951220 | 33.841463 |
| question_37_sante | 16.666667 | 21.913580 | 22.222222 | 39.197531 |
| question_37_emploi | 18.975904 | 29.518072 | 21.084337 | 30.421687 |
| question_37_environnement | 30.085960 | 26.934097 | 24.068768 | 18.911175 |
display(crossed_37_2_pme_perc)
| Actions | C’est un axe clé | Nous menons quelques actions | Nous réfléchissons à nous engager | Ce n'est pas prévu |
|---|---|---|---|---|
| question_37_aide | 3.437500 | 18.750000 | 15.312500 | 62.500000 |
| question_37_protection | 4.530744 | 9.708738 | 18.122977 | 67.637540 |
| question_37_solidarite | 5.678233 | 19.873817 | 18.927445 | 55.520505 |
| question_37_lien | 6.153846 | 15.076923 | 22.769231 | 56.000000 |
| question_37_art | 6.624606 | 16.403785 | 9.463722 | 67.507886 |
| question_37_pauvrete | 11.285266 | 20.376176 | 21.316614 | 47.021944 |
| question_37_entreprenariat | 11.746032 | 15.238095 | 18.730159 | 54.285714 |
| question_37_handicap | 12.269939 | 24.539877 | 30.368098 | 32.822086 |
| question_37_lutte | 14.670659 | 22.155689 | 22.754491 | 40.419162 |
| question_37_egalite | 15.360502 | 22.257053 | 20.062696 | 42.319749 |
| question_37_education | 16.463415 | 27.743902 | 21.951220 | 33.841463 |
| question_37_sante | 16.666667 | 21.913580 | 22.222222 | 39.197531 |
| question_37_emploi | 18.975904 | 29.518072 | 21.084337 | 30.421687 |
| question_37_environnement | 30.085960 | 26.934097 | 24.068768 | 18.911175 |
# Pour les ETI
crossed_37_2_eti = crossed_37_2.loc[crossed_37_2['categ_taille_entreprises'] == 'ETI']
crossed_37_2_eti = crossed_37_2_eti[['question_37_aide', 'question_37_art', 'question_37_education', 'question_37_egalite', 'question_37_emploi', 'question_37_entreprenariat', 'question_37_environnement', 'question_37_handicap', 'question_37_lien', 'question_37_lutte', 'question_37_pauvrete', 'question_37_protection', 'question_37_sante', 'question_37_solidarite']]
# Pivot de la table
crossed_37_2_eti = crossed_37_2_eti.apply(pd.Series.value_counts).fillna(0).astype(int)
crossed_37_2_eti = crossed_37_2_eti.reset_index()
crossed_37_2_eti.rename(columns={'index':'Actions'}, inplace=True)
crossed_37_2_eti = crossed_37_2_eti.pivot_table(columns='Actions')
crossed_37_2_eti = crossed_37_2_eti.reindex(["C’est un axe clé", "Nous menons quelques actions", "Nous réfléchissons à nous engager", "Ce n'est pas prévu"], axis=1)
display(crossed_37_2_eti)
# En pourcentage
crossed_37_2_eti_perc = crossed_37_2_eti.div(crossed_37_2_eti.sum(axis=1), axis=0)*100
crossed_37_2_eti_perc = crossed_37_2_eti_perc.sort_values(by="C’est un axe clé")
display(crossed_37_2_eti_perc)
# plot bar chart
crossed_37_2_eti_perc.plot(kind='bar', stacked=True)
plt.legend(bbox_to_anchor=(1.4, 1))
plt.title("Thématiques d'engagement les plus plébiscitées dans les ETI")
plt.show()
| Actions | C’est un axe clé | Nous menons quelques actions | Nous réfléchissons à nous engager | Ce n'est pas prévu |
|---|---|---|---|---|
| question_37_aide | 14 | 65 | 11 | 118 |
| question_37_art | 20 | 45 | 11 | 127 |
| question_37_education | 60 | 71 | 36 | 44 |
| question_37_egalite | 50 | 59 | 30 | 68 |
| question_37_emploi | 70 | 75 | 29 | 31 |
| question_37_entreprenariat | 25 | 45 | 33 | 92 |
| question_37_environnement | 75 | 64 | 48 | 30 |
| question_37_handicap | 64 | 82 | 41 | 25 |
| question_37_lien | 14 | 38 | 44 | 97 |
| question_37_lutte | 39 | 69 | 41 | 53 |
| question_37_pauvrete | 33 | 56 | 40 | 71 |
| question_37_protection | 6 | 19 | 24 | 149 |
| question_37_sante | 55 | 82 | 28 | 38 |
| question_37_solidarite | 21 | 66 | 31 | 84 |
| Actions | C’est un axe clé | Nous menons quelques actions | Nous réfléchissons à nous engager | Ce n'est pas prévu |
|---|---|---|---|---|
| question_37_protection | 3.030303 | 9.595960 | 12.121212 | 75.252525 |
| question_37_aide | 6.730769 | 31.250000 | 5.288462 | 56.730769 |
| question_37_lien | 7.253886 | 19.689119 | 22.797927 | 50.259067 |
| question_37_art | 9.852217 | 22.167488 | 5.418719 | 62.561576 |
| question_37_solidarite | 10.396040 | 32.673267 | 15.346535 | 41.584158 |
| question_37_entreprenariat | 12.820513 | 23.076923 | 16.923077 | 47.179487 |
| question_37_pauvrete | 16.500000 | 28.000000 | 20.000000 | 35.500000 |
| question_37_lutte | 19.306931 | 34.158416 | 20.297030 | 26.237624 |
| question_37_egalite | 24.154589 | 28.502415 | 14.492754 | 32.850242 |
| question_37_sante | 27.093596 | 40.394089 | 13.793103 | 18.719212 |
| question_37_education | 28.436019 | 33.649289 | 17.061611 | 20.853081 |
| question_37_handicap | 30.188679 | 38.679245 | 19.339623 | 11.792453 |
| question_37_emploi | 34.146341 | 36.585366 | 14.146341 | 15.121951 |
| question_37_environnement | 34.562212 | 29.493088 | 22.119816 | 13.824885 |
display(crossed_37_2_eti_perc)
| Actions | C’est un axe clé | Nous menons quelques actions | Nous réfléchissons à nous engager | Ce n'est pas prévu |
|---|---|---|---|---|
| question_37_protection | 3.030303 | 9.595960 | 12.121212 | 75.252525 |
| question_37_aide | 6.730769 | 31.250000 | 5.288462 | 56.730769 |
| question_37_lien | 7.253886 | 19.689119 | 22.797927 | 50.259067 |
| question_37_art | 9.852217 | 22.167488 | 5.418719 | 62.561576 |
| question_37_solidarite | 10.396040 | 32.673267 | 15.346535 | 41.584158 |
| question_37_entreprenariat | 12.820513 | 23.076923 | 16.923077 | 47.179487 |
| question_37_pauvrete | 16.500000 | 28.000000 | 20.000000 | 35.500000 |
| question_37_lutte | 19.306931 | 34.158416 | 20.297030 | 26.237624 |
| question_37_egalite | 24.154589 | 28.502415 | 14.492754 | 32.850242 |
| question_37_sante | 27.093596 | 40.394089 | 13.793103 | 18.719212 |
| question_37_education | 28.436019 | 33.649289 | 17.061611 | 20.853081 |
| question_37_handicap | 30.188679 | 38.679245 | 19.339623 | 11.792453 |
| question_37_emploi | 34.146341 | 36.585366 | 14.146341 | 15.121951 |
| question_37_environnement | 34.562212 | 29.493088 | 22.119816 | 13.824885 |
# Pour les GG
crossed_37_2_gg = crossed_37_2.loc[crossed_37_2['categ_taille_entreprises'] == 'Grand groupe']
crossed_37_2_gg = crossed_37_2_gg[['question_37_aide', 'question_37_art', 'question_37_education', 'question_37_egalite', 'question_37_emploi', 'question_37_entreprenariat', 'question_37_environnement', 'question_37_handicap', 'question_37_lien', 'question_37_lutte', 'question_37_pauvrete', 'question_37_protection', 'question_37_sante', 'question_37_solidarite']]
# Pivot de la table
crossed_37_2_gg = crossed_37_2_gg.apply(pd.Series.value_counts).fillna(0).astype(int)
crossed_37_2_gg = crossed_37_2_gg.reset_index()
crossed_37_2_gg.rename(columns={'index':'Actions'}, inplace=True)
crossed_37_2_gg = crossed_37_2_gg.pivot_table(columns='Actions')
crossed_37_2_gg = crossed_37_2_gg.reindex(["C’est un axe clé", "Nous menons quelques actions", "Nous réfléchissons à nous engager", "Ce n'est pas prévu"], axis=1)
display(crossed_37_2_gg)
# En pourcentage
crossed_37_2_gg_perc = crossed_37_2_gg.div(crossed_37_2_gg.sum(axis=1), axis=0)*100
crossed_37_2_gg_perc = crossed_37_2_gg_perc.sort_values(by="C’est un axe clé")
display(crossed_37_2_gg_perc)
# plot bar chart
crossed_37_2_gg_perc.plot(kind='bar', stacked=True)
plt.legend(bbox_to_anchor=(1.4, 1))
plt.title("Thématiques d'engagement les plus plébiscitées dans les Grands groupes")
plt.show()
| Actions | C’est un axe clé | Nous menons quelques actions | Nous réfléchissons à nous engager | Ce n'est pas prévu |
|---|---|---|---|---|
| question_37_aide | 3 | 23 | 3 | 14 |
| question_37_art | 5 | 11 | 3 | 23 |
| question_37_education | 22 | 16 | 5 | 2 |
| question_37_egalite | 15 | 15 | 5 | 8 |
| question_37_emploi | 22 | 15 | 4 | 5 |
| question_37_entreprenariat | 12 | 12 | 4 | 16 |
| question_37_environnement | 25 | 15 | 4 | 5 |
| question_37_handicap | 27 | 15 | 4 | 2 |
| question_37_lien | 7 | 14 | 8 | 12 |
| question_37_lutte | 15 | 16 | 4 | 6 |
| question_37_pauvrete | 13 | 16 | 6 | 9 |
| question_37_protection | 5 | 6 | 5 | 23 |
| question_37_sante | 18 | 17 | 4 | 4 |
| question_37_solidarite | 8 | 25 | 4 | 7 |
| Actions | C’est un axe clé | Nous menons quelques actions | Nous réfléchissons à nous engager | Ce n'est pas prévu |
|---|---|---|---|---|
| question_37_aide | 6.976744 | 53.488372 | 6.976744 | 32.558140 |
| question_37_art | 11.904762 | 26.190476 | 7.142857 | 54.761905 |
| question_37_protection | 12.820513 | 15.384615 | 12.820513 | 58.974359 |
| question_37_lien | 17.073171 | 34.146341 | 19.512195 | 29.268293 |
| question_37_solidarite | 18.181818 | 56.818182 | 9.090909 | 15.909091 |
| question_37_entreprenariat | 27.272727 | 27.272727 | 9.090909 | 36.363636 |
| question_37_pauvrete | 29.545455 | 36.363636 | 13.636364 | 20.454545 |
| question_37_egalite | 34.883721 | 34.883721 | 11.627907 | 18.604651 |
| question_37_lutte | 36.585366 | 39.024390 | 9.756098 | 14.634146 |
| question_37_sante | 41.860465 | 39.534884 | 9.302326 | 9.302326 |
| question_37_emploi | 47.826087 | 32.608696 | 8.695652 | 10.869565 |
| question_37_education | 48.888889 | 35.555556 | 11.111111 | 4.444444 |
| question_37_environnement | 51.020408 | 30.612245 | 8.163265 | 10.204082 |
| question_37_handicap | 56.250000 | 31.250000 | 8.333333 | 4.166667 |
display(crossed_37_2_gg_perc)
| Actions | C’est un axe clé | Nous menons quelques actions | Nous réfléchissons à nous engager | Ce n'est pas prévu |
|---|---|---|---|---|
| question_37_aide | 6.976744 | 53.488372 | 6.976744 | 32.558140 |
| question_37_art | 11.904762 | 26.190476 | 7.142857 | 54.761905 |
| question_37_protection | 12.820513 | 15.384615 | 12.820513 | 58.974359 |
| question_37_lien | 17.073171 | 34.146341 | 19.512195 | 29.268293 |
| question_37_solidarite | 18.181818 | 56.818182 | 9.090909 | 15.909091 |
| question_37_entreprenariat | 27.272727 | 27.272727 | 9.090909 | 36.363636 |
| question_37_pauvrete | 29.545455 | 36.363636 | 13.636364 | 20.454545 |
| question_37_egalite | 34.883721 | 34.883721 | 11.627907 | 18.604651 |
| question_37_lutte | 36.585366 | 39.024390 | 9.756098 | 14.634146 |
| question_37_sante | 41.860465 | 39.534884 | 9.302326 | 9.302326 |
| question_37_emploi | 47.826087 | 32.608696 | 8.695652 | 10.869565 |
| question_37_education | 48.888889 | 35.555556 | 11.111111 | 4.444444 |
| question_37_environnement | 51.020408 | 30.612245 | 8.163265 | 10.204082 |
| question_37_handicap | 56.250000 | 31.250000 | 8.333333 | 4.166667 |